Hi thanks very much for the reply. Could I use that script with the following folder references removed so that all folders in M:\Planning\ and F:\ are replaced or do I have to do it by individual folder?import arcpy, os from arcpy import env workspace = env.workspace = r"C:\Temp\Python" mxdList = arcpy.ListFiles("*.mxd") for mxd in mxdList: mxd2 = workspace + os.sep + mxd mapdoc = arcpy.mapping.MapDocument(mxd2) mapdoc.findAndReplaceWorkspacePaths(r"M:\Planning\", r"M:\Directorates\Planning\") mapdoc.findAndReplaceWorkspacePaths(r"F:\", r"M:\Directorates\Planning\") mapdoc.save() del mapdoc Also do I have to enter that script into all current .mxd files or can it be entered directly into ArcGIS just once?Thanks again
import arcpy, os from arcpy import env workspace = env.workspace = r"C:\Temp\Python" mxdList = arcpy.ListFiles("*.mxd") for mxd in mxdList: mxd2 = workspace + os.sep + mxd mapdoc = arcpy.mapping.MapDocument(mxd2) mapdoc.findAndReplaceWorkspacePaths(r"M:\Planning\", r"M:\Directorates\Planning\") mapdoc.findAndReplaceWorkspacePaths(r"F:\", r"M:\Directorates\Planning\") mapdoc.save() del mapdoc
import arcpy, os from arcpy import env from arcpy import mapping workspace = env.workspace = r"F:" mxdList = arcpy.ListFiles("*.mxd") for mxd in mxdList: mxd2 = workspace + os.sep + mxd mapdoc = arcpy.mapping.MapDocument(mxd2) for df in mapping.ListDataFrames(mapdoc): for layer in mapping.ListLayers(mxd, "", df): if "F:\\" in layer.dataSource: origPath = layer.dataSource.split("\\") origPath2 = "" for x in origPath[0:-1]: origPath2 += x + os.sep origPath2 = origPath2[0:-1] dataSource = layer.dataSource.strip("F:\\") dataSource = dataSource.split("\\") path = "" for y in dataSource[0:-1]: path += y + os.sep path = path[0:-1] mapdoc.findAndReplaceWorkspacePaths(origPath2, r"M:\Directorates\Planning" + os.sep + path) elif "M:\\Planning\\" in layer.dataSource: origPath = layer.dataSource.split("\\") origPath2 = "" for x in origPath[0:-1]: origPath2 += x + os.sep origPath2 = origPath2[0:-1] dataSource = layer.dataSource.strip("M:\\Planning\\") dataSource = dataSource.split("\\") path = "" for y in dataSource[0:-1]: path += y + os.sep path = path[0:-1] mapdoc.findAndReplaceWorkspacePaths(origPath2, r"M:\Directorates\Planning" + os.sep + path) mapdoc.save() del mapdoc
workspace = env.workspace = r"F:"
Yes, you can run this script twice. You will just need to update the code to use the C:\ drive.
Yes, this is possible, but takes a little bit more coding. Here's an example:import arcpy, os from arcpy import env from arcpy import mapping workspace = env.workspace = r"F:" mxdList = arcpy.ListFiles("*.mxd") for mxd in mxdList: mxd2 = workspace + os.sep + mxd mapdoc = arcpy.mapping.MapDocument(mxd2) for df in mapping.ListDataFrames(mapdoc): for layer in mapping.ListLayers(mxd, "", df): if "F:\\" in layer.dataSource: origPath = layer.dataSource.split("\\") origPath2 = "" for x in origPath[0:-1]: origPath2 += x + os.sep origPath2 = origPath2[0:-1] dataSource = layer.dataSource.strip("F:\\") dataSource = dataSource.split("\\") path = "" for y in dataSource[0:-1]: path += y + os.sep path = path[0:-1] mapdoc.findAndReplaceWorkspacePaths(origPath2, r"M:\Directorates\Planning" + os.sep + path) elif "M:\\Planning\\" in layer.dataSource: origPath = layer.dataSource.split("\\") origPath2 = "" for x in origPath[0:-1]: origPath2 += x + os.sep origPath2 = origPath2[0:-1] dataSource = layer.dataSource.strip("M:\\Planning\\") dataSource = dataSource.split("\\") path = "" for y in dataSource[0:-1]: path += y + os.sep path = path[0:-1] mapdoc.findAndReplaceWorkspacePaths(origPath2, r"M:\Directorates\Planning" + os.sep + path) mapdoc.save() del mapdocI have not tested this extensively, but had a similar version of this script work successfully. Also, this will need to be only executed once. The script will loop through all MXDs in the workspace directory:workspace = env.workspace = r"F:"In the above example, it will find all the MXDs on the F drive. You can update this to the folder location where your MXDs are.
You could use the findAndReplaceWorkspacePaths to accomplish this. Here is an example:import arcpy, os from arcpy import env workspace = env.workspace = r"C:\Temp\Python" mxdList = arcpy.ListFiles("*.mxd") for mxd in mxdList: mxd2 = workspace + os.sep + mxd mapdoc = arcpy.mapping.MapDocument(mxd2) mapdoc.findAndReplaceWorkspacePaths(r"M:\Planning\Development Plan", r"M:\Directorates\Planning\Development Plan") mapdoc.findAndReplaceWorkspacePaths(r"F:\Planning policy\Shapefiles", r"M:\Directorates\Planning\Planning Policy\Shapefiles") mapdoc.findAndReplaceWorkspacePaths(r"M:\Directorates\Planning", r"M:\Directorates\Planning\08Plan") mapdoc.save() del mapdoc
import arcpy, os from arcpy import env workspace = env.workspace = r"C:\Temp\Python" mxdList = arcpy.ListFiles("*.mxd") for mxd in mxdList: mxd2 = workspace + os.sep + mxd mapdoc = arcpy.mapping.MapDocument(mxd2) mapdoc.findAndReplaceWorkspacePaths(r"M:\Planning\Development Plan", r"M:\Directorates\Planning\Development Plan") mapdoc.findAndReplaceWorkspacePaths(r"F:\Planning policy\Shapefiles", r"M:\Directorates\Planning\Planning Policy\Shapefiles") mapdoc.findAndReplaceWorkspacePaths(r"M:\Directorates\Planning", r"M:\Directorates\Planning\08Plan") mapdoc.save() del mapdoc
Membros conectados podem postar, seguir atualizações e mais. Novo aqui? Registre uma conta gratuita.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.