原文链接:
问题
批处理的方法二是什么:命令行文件?
回答
使用命令行文件的批处理
在命令行选项下输入FME,你将看到FME的命令行选项之一是…
命令行文件是包含FME相关命令列表的一个文件,每行一个命令。“\”可用于在文件中的多个物理行上拆分命令。可以以这种方式处理的命令有:生成映射文件,运行一个工作空间或映射文件,或者执行另外一个批处理文件。
例如,命令行文件可能包含如下的行:
注意你不需要在命令行添加‘fme’的前缀,因为当你给出命令“fme COMMAND_FILE <commandFile>‿ 时FME已经启动。
关键字LOG_FILENAME是可选项,允许写入日志文件 ,因此推荐使用。
因此,将几个命令插入命令文件会为您提供一个“batch”文件,该文件可以使用上面的fme命令执行,或者将该命令本身放入* .bat文件中。
多个数据集
多个数据集命令,每个读模块超过一个数据集。例如:
虽然这在普通命令行上可运行,但它会在命令文件中失败,因为解析器会误解命令行上的项目数。
最终FME在其映射文件中,看起来如下所示:
... 即整个列表开头和结尾为双引号组,每个内部文件名的结尾和开头只有一个引号。
为了得到期望的结果,你需要在映射文件中的每个引号前放一个 \ ,然后在所有的开头和结尾放一个 “ 。因此你需要使用的语法为:
这个方法是可靠的,但是如果你的数据集没有空格字符,且你需要更快的解决方案,FME只需要看到:
这意味着命令文件中有:
Python 版本
一个fme.exe实例只能加载一个Python解译器。这意味着为了让命令文件执行命令文件中列出的所有工作空间,在工作空间Workspace Parameters > Advanced > Python Interpreter 中设置的Python解译器值要对所有工作空间兼容(例如:所有3.x+)。
如果命令文件运行时检测到兼容不匹配,则转换失败并提示错误信息,且命令文件的运行将在该工作空间结束。