Hi there,I was wondering how I would modify the code of the Batch Project script shown below, to read from a text file of shapefile names as input. A sample of the textfile is shown under the code:#Import required modules
import ConversionUtils, time
#Define message constants so they may be translated easily
msgWorkspace = ConversionUtils.gp.GetIDMessage(86109) # Message "Output workspace does not exist: "
msgCoordinateSystem = ConversionUtils.gp.GetIDMessage(86110) #Message "Must Enter a Spatial Reference or Template Feature Class."
msgFail = ConversionUtils.gp.GetIDMessage(86111) # Message "Failed to project "
#Set the input datasets
inputs = ConversionUtils.gp.GetParameterAsText(0)
# The list is split by semicolons ";"
inputs = ConversionUtils.SplitMultiInputs(inputs)
#Set the output workspace
output_workspace = ConversionUtils.gp.GetParameterAsText(1)
#Set the spatial reference
output_coordinate_system = ConversionUtils.gp.GetParameterAsText(2)
#Set the template dataset
template_dataset = ConversionUtils.gp.GetParameterAsText(3)
#Set the transformation
transformation = ConversionUtils.gp.GetParameterAsText(4)
#Message 86112 "Projecting multiple datasets ..."
ConversionUtils.gp.SetProgressor("step",ConversionUtils.gp.GetIDMessage(86112), 0, len(inputs))
if (output_coordinate_system == "" or output_coordinate_system == "#") and (template_dataset == "" or template_dataset == "#"):
raise ConversionUtils.GPError(msgCoordinateSystem)
elif (output_coordinate_system != "") and (output_coordinate_system != "#"):
sr = output_coordinate_system
elif (template_dataset != "") and (template_dataset != "#"):
dsc = ConversionUtils.gp.Describe(template_dataset)
sr = dsc.SpatialReference
for input in inputs:
try:
outdata = ConversionUtils.GenerateOutputName(input, output_workspace)
#Message 86113 "Projecting "
ConversionUtils.gp.SetProgressorLabel(ConversionUtils.gp.GetIDMessage(86113) + input)
ConversionUtils.gp.Project_management(input, outdata, sr, transformation)
#Message 86114 "Projected %s to %s successfully."
ConversionUtils.gp.AddMessage(ConversionUtils.gp.GetIDMessage(86114) % (input, outdata))
except Exception, ErrorDesc:
msgWarning = msgFail + "%s" % input
msgStr = ConversionUtils.gp.GetMessages(2)
ConversionUtils.gp.AddWarning(ConversionUtils.ExceptionMessages(msgWarning, msgStr, ErrorDesc))
ConversionUtils.gp.SetProgressorPosition()
time.sleep(0.5)
Text File Sample:[INDENT]C:\Users\revresources\scratch\shapefiles\Test_Output\Geochem Merged\Pyramid_PanCon.shpC:\Users\revresources\scratch\shapefiles\Test_Output\Geochem Merged\Pyramid_Rocks.shpC:\Users\revresources\scratch\shapefiles\Test_Output\Geochem Merged\Pyramid_Silts.shpC:\Users\revresources\scratch\shapefiles\Test_Output\Geochem Merged\Pyramid_Soils.shpC:\Users\revresources\scratch\shapefiles\Test_Output\test2\mod\interpretive alteration_point.shpC:\Users\revresources\scratch\shapefiles\Test_Output\test2\mod\interpretive alteration_polyline.shpC:\Users\revresources\scratch\shapefiles\Test_Output\test2\mod\Interpretive Pyramid geology_polyline.shpC:\Users\revresources\scratch\shapefiles\Test_Output\test2\mod\Interpretive Pyramid geology_region.shp[/INDENT]Any help would be appreciated.ThanksFound the answer on GIS - Stack Exchange - I needed to change the block:#Set the input datasets
inputs = ConversionUtils.gp.GetParameterAsText(0)
# The list is split by semicolons ";"
inputs = ConversionUtils.SplitMultiInputs(inputs)
With:
inputs = [item.replace('\n', '') for item in open(filename).readlines()]
Where filename is your file with the list of SHP ("Text File Sample").