# xModifyDataLocationsInlayerFiles.py import sys, os import arcpy outFolder = r"C:\Projects\CoreData\GeoName" newFolder = r"C:\projects\testmove\test2\GeoName" inLayerFile = r"C:\projects\testmove\test2\GeoName\LayerFiles\AG10\BaseInfo.lyr" for lyr in arcpy.mapping.Layer(inLayerFile): pout = lyr.isFeatureLayer if pout == True: if lyr.supports("DATASOURCE"): currWSPath = str(lyr.workspacePath) scol = str.upper(currWSPath).find('GEONAME') scol = scol + len('GEONAME') + 1 newPath = newFolder + os.sep + currWSPath[scol:] print lyr.name + " | Path: " + newPath + " | DSN: " + lyr.datasetName lyr.replaceDataSource(unicode(newPath), 'FILEGDB_WORKSPACE', lyr.datasetName, True) else: print "Layer " + lyr.name + " does not support datasource changes" else: pass
Solved! Go to Solution.
import arcpy outFolder = r"C:\Projects\CoreData\GeoName" newFolder = r"\\silver\projects\SpatialData_Core\GeoName" inLayerFile = r"C:\Projects\testmove\test2\GeoName\LayerFiles\AG10\BaseInfo.lyr" outLayerFile = r"\\silver\projects\SpatialData_Core\GeoName\LayerFiles\AG10\BaseInfo_updated.lyr" inMXDFile = r"C:\Projects\CoreData\GeoName\LayerFiles\AG10\BaseInfo.mxd" outMXDFile = r"\\silver\projects\SpatialData_Core\GeoName\LayerFiles\AG10\BaseInfo_updated.mxd" if arcpy.Exists(outMXDFile): arcpy.Delete_management(outMXDFile) if arcpy.Exists(outLayerFile): arcpy.Delete_management(outLayerFile) mxd = arcpy.mapping.MapDocument(inMXDFile) mxd.findAndReplaceWorkspacePaths(outFolder,newFolder, False) mxd.saveACopy(outMXDFile) del mxd mxd = arcpy.mapping.MapDocument(outMXDFile) df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0] lyr = arcpy.mapping.ListLayers(mxd, "", df)[0] lyr.saveACopy(outLayerFile) if arcpy.Exists(outMXDFile): arcpy.Delete_management(outMXDFile) print "Finished creating new Layer file: " + outLayerFile
import arcpy fullLyr = arcpy.mapping.Layer(r"C:\Temp\FullPath.lyr") lyrs = arcpy.mapping.ListLayers(fullLyr) for lyr in lyrs: if lyr.supports("DATASOURCE"): lyr.findAndReplaceWorkspacePath(r"C:\Temp", r"C:\Active\ArcPY\ScrumWorks\Data") fullLyr.saveACopy(r"C:\Temp\FullPath2.lyr") rellLyr = arcpy.mapping.Layer(r"C:\Temp\RelPath.lyr") lyrs = arcpy.mapping.ListLayers(rellLyr) for lyr in lyrs: if lyr.supports("DATASOURCE"): lyr.findAndReplaceWorkspacePath(r"C:\Temp", r"C:\Active\ArcPY\ScrumWorks\Data") relLyr.saveACopy(r"C:\Temp\RelPath2.lyr")