批处理方法1:命令行或批处理文件

命令行上的FME

FME可以从Windows中的命令行运行:打开命令提示符窗口并键入FME会提供下面显示的完整选项列表。
命令FME<workspacename>.fmw将运行特定的工作空间。因此,如果可以从命令行调用FME工作空间,则可以从DOS批处理(.bat)文件调用一系列工作空间(或具有不同数据集的同一工作空间)。

1、用法

fme<controlFile>[<keyword><value>]*[--<macroName><value>]*
fme<scriptfile>[<scriptArgument>*]
fme<licenseFile>.fmelic
fme<command><arguments>

其中:
<controlFile>是<mappingFile>.fme或<workspace>.fmw中的一个
<scriptFile>是<tclScript>.tcl或<pythonScript>.py中的一个
<command>是以下命令中的一个:
命令名称参数
-----------------------------------------------------
GENERATE<sourceType><destType><sourceDataset><controlFile>[<keyword><value>]*
PARAMETER_FILE<parameterFile>
COMMAND_FILE<commandFile>
REGISTER_SOCKET<hostName><service>[serverConfigFile][-<ServerParmName><ServerParmValue>]*
CREATE_SOCKET<service>[serverConfigFile][-<ServerParmName><ServerParmValue>]*
GENTRANS[<keyword><value>]*<parameterFile>
GENTRANS[<keyword><value>]*<sourceType><sourceDataset><destType><destDataset>
LIST_TRANSFORMERS[VERBOSE]
LIST_UNLICENSED_TRANSFORMERS
LIST_FACTORIES
LIST_FUNCTIONS
PROTECT<sourceFile><destFile>

如何将源数据集和目标数据集传递到批处理?

答:如果要处理FME工作空间,则不一定需要在批处理命令中定义源和目标文件,它们已在工作空间中定义。
但是,出于文档目的以及尚未定义数据集的工作空间,源数据集和目标数据集在FME中保存为参数(或宏)。参数是在运行时传递到工作空间的一种变量类型。默认情况下,源数据集和目标数据集设置为参数,您可以按如下方式定义参数SourceDataset和DestinationDataset的值例如,当您有多个源数据集时,您需要定义SourceDataset_<formatname>_1,其中<formatname>是源数据格式的缩写名称,例如IGDS。
您可以通过使用以下格式从命令行运行FME工作空间来将值传递给参数...

fme<workspacename>.fmw--<myparametername><parametervalue>

例如,将值“myfile.dgn”传递给工作空间project1中的参数“SourceDataset_IGDS_1”

fmeproject1.fmw--SourceDataset_IGDS_1myfile.dgn

2、如何将多个源数据集和目标数据集传递到批处理?

1.使用具有DOS变量的脚本文件。例如:

for %%f in (*.dgn) do "c:\programfiles\fme\fme.exe" C:\FMEInput\dgn2dxf.fme --SourceDataset "%%f" --DestDataset "%%~nf.dxf"

3、命令行太长不起作用,有没有办法绕过长命令行?

答:是的。命令行参数可以存储在文件中,并由FME使用语法读取...

fmePARAMETER_FILE <parameterFile>

参数文件必须包含运行FME所需的所有值。如果创建名为“myparamfile.par”的参数文件。参数文件的内容将如下所示:
myworkspace.fmw --PARAM1 value1 --PARAM2 value2
并运行方式:
fme PARAMETER_FILE myparamfile.par
不幸的是,你不能混合PARAMETER_FILE和其他命令行参数,所以:
fme PARAMETER_FILE myparamfile.par --PARAM3 value3
参数无效,FME将忽略PARAM3

FME和DOS批处理文件

所附示例(请参阅CompleteBatchExample.zip中的附件:translate.bat)将DWG文件目录转换为GML文件。首先运行验证转换,然后将通过验证的文件转换为GML。任何未通过验证或转换的文件(这也将处理fme.exe崩溃)都将放置在FAILED目录中。所有其他文件都放在“已完成”目录中。每个转换的单独日志文件都放在LOGS目录中。
还会生成一个报告文件,提供每个转换的结果(通过或失败),并指示转换失败的原因。
如果转换失败,报告文件将通过电子邮件发送给用户。
moveFilesBack.bat文件会将DWG文件放回SOURCE目录,以便可以再次测试translate.bat。
此示例中使用了以下命令、字符和变量。

1、有用的DOS命令

DIR

列出目录中的文件。DIR /B可用于创建文件列表。

FIND (FINDSTR)

用于在日志文件中搜索特定短语。在较新版本的Windows中,FIND命令已被FINDSTR命令取代。

FOR

用于运行使用多个文件的转换。每个文件都使用自己的转换。

IF

在批处理程序中执行条件处理。

ECHO

用于将文本发送到屏幕或文件。或输出一个空行(ECHO.)。

MOVE

将文件从一个目录移动到另一个目录。

MD

用于创建目录。如果输出目录尚不存在,FME有时会遇到问题。

DEL

用于删除不再需要的文件。DEL/Q%LOG%\*.*将删除所有日志文件,而无需征得许可。

PAUSE

在调试期间很有用。用于防止DOS窗口在转换完成后关闭。

SET

用于设置变量。对于设置目录名称非常有用,以便有一个位置可以编辑它们,并避免需要多次键入它们。

SetLocal EnableDelayExpansion/EndLocal

如果要使用!ERRORLEVEL!的FIND,SetLocalEnableDelayExpansion必须在文件的开头,EndLocal在结尾。这会延迟ERRORLEVEL的评估,否则它将在批处理文件启动时完成,并且ERRORLEVEL实际上不是FIND的ERRORLEVEL。

2、有用的DOS字符

^

这是一个转义字符。它可以避开回车符,因此它可以充当延续字符(只需确保不要在它后面放置空格)。

fme acad2gml_load.fmw --SourceDataset_ACAD "%%F"^--DestDataset_GML"%OUTPUT%\%%~nF.gml"^--LOG_FILE"%LOG%\%%~nF_load.log"

等同于

fme acad2gml_load.fmw --SourceDataset_ACAD "%%F"--DestDataset_GML"%OUTPUT%\%%~nF.gml"--LOG_FILE"%LOG%\%%~nF_load.log"

|

用于将一个命令的结果通过管道传送到另一个命令中。FME|FIND“Build”将找到FME的内部版本号。

>

将命令(如ECHO)的输出发送到新的文本文件。这将覆盖现有文件。

>>

将命令(如ECHO)的输出追加到新的文本文件中。这不会覆盖现有文件。

::

用于创建注释行。这优于使用REM-它更快,并且对注释中使用的字符没有限制。

@

防止回显命令,即使ECHO设置为ON也是如此。

3、有用的变量

!ERRORLEVEL!

用于返回FIND的错误级别。值为0表示已找到搜索字符串,值为1表示找不到搜索字符串。使用此选项而不是%ERRORLEVEL%。此变量在命令运行时展开,而不是在批处理文件启动时展开。

%DATE%

返回当前日期。可用于创建时间戳。

%TIME%

返回当前时间。可用于创建时间戳。

%CD%

返回当前目录。从中运行批处理文件的目录。

Password

我通常会创建一个包含我的密码的PW环境变量(用户变量)。然后,我可以使用%PW%在批处理文件中调用我的密码,而不是将我的密码添加到实际的批处理文件中。

下载链接:百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com/s/1vGC1qzOSpwl8jFsuDPiwQA?pwd=s1me

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值