使用命令文件进行批处理
在命令提示符中输入FME,你将会看到FME的一个命令选项,如下:
fme COMMAND_FILE <commandFile>
命令文件是一个包含FME相关命令列表的文件,每行一个命令。符号(\)可用于将命令拆分到文件中的多个行上。可以以这种方式处理的命令包括:映射文件生成、运行工作区或映射文件,甚至执行另一个批处理文件。
例如,命令文件可能包含如下行:
c:\dxf2dgn.fmw --SourceDataset c:\in1.dxf --DestDataset c:\out1.dgnLOG_FILENAME c:\fme.log
请注意,您不需要在命令前面加上“fme”前缀,因为当您给出命令”fme COMMAND_FILE <commandFile>”时,FME已经启动了。
LOG_FILENAME关键字是可选的,但允许写入日志文件,因此推荐使用。
因此,将多个命令插入到命令文件中会为您提供一个“批处理”文件,该文件可以使用上面的fme命令执行,也可以通过将该命令本身放入*.bat文件中来执行。
多个数据集
多个数据集命令让每个读模块读取多个数据集,例如:
fme.exe c:\temp\command.fmw --SourceDataset_ACAD """"C:\FMEData\Data\Water\distribution_L25.dwg" "C:\FMEData\Data\Water\distribution_L26.dwg"""" --DestDataset_DGNV8 c:\temp\output.dgn
虽然这在普通命令行上可以正常运行,但在命令文件中运行却会失败,因为解析器会错误解析命令行上的项目数。
最终,FME在其映射文件中需要看到类似下面的内容:
""C:\dale\data\testSuper\fc.shp" "C:\dale\data\testSuper\mplan.shp""
即在整个列表的开始和结尾处使用双引号,每个内部文件名的末尾和开头也都设置一个引号。
为了获得所需的结果,您需要在映射文件中最终想要内容的每个引号前面放置一个“\”,然后在所有这些的开头和结尾处放置一个”号。因此,您需要使用的语法将是:
fme.exe c:\temp\command.fmw --SourceDataset_ACAD "\"\"C:\FMEData\Data\Water\distribution_L25.dwg\" \"C:\FMEData\Data\Water\distribution_L26.dwg\"\"" --DestDataset_DGNV8 c:\temp\output.dgn
如果您的数据集没有空格字符,并且您想要更快的解决方案,那么FME只需要看到:
"C:\dale\data\testSuper\fc.shp C:\dale\data\testSuper\mplan.shp"
这意味着在命令文件中具有:
"\"C:\dale\data\testSuper\fc.shp C:\dale\data\testSuper\mplan.shp\""
Python版本
一个fme.exe的实例只能加载一个Python解释器。这意味着为了使命令文件执行命令文件中列出的所有工作空间,在“工作空间参数”>”高级“>”Python解释器”中设置的“工作空间Python解释器”值需要兼容所有的工作空间(例如,3.x+)。
如果在运行命令文件时检测到兼容性不匹配,则转换将失败并显示错误消息,命令文件的运行将在该工作区结束。