-1

我想FME.fmw从一个文件中运行一个文件PowerShell.ps1。我知道我可以使用命令从批处理中做到这一点,fme C:\Path\of\fmw 但我找不到使用PowerShell. Start-Process 只会打开FME而不启动它

$repertory_source = Read-Host "Path of file ? (X:\X\X.fmw)"
start-process -FilePath $repertory_source

我想运行FME.fmw而不需要打开FME workbench.

4

2 回答 2

0

让用户手动输入可能更长的路径是 IMO 容易出错且对用户不友好的行为

我建议使用预先配备文件类型和起始目录的 OpenFileDialog。

## Q:\Test\2019\04\26\SO_55862942.ps1

Function Get-FileName($StartHere=[Environment]::GetFolderPath("MyDocuments")){
    Add-Type -AssemblyName System.Windows.Forms
    $OFD = New-Object System.Windows.Forms.OpenFileDialog
    $OFD.Title = "Please select fme file"
    $OFD.InitialDirectory = $StartHere
    $OFD.Filter = "fme workspace files (*.fmw)|*.fmw|fme parameter files (*.par)|*.par|All files (*.*)|*.*"
    $OFD.Multiselect = $False
    $OFD.ShowDialog() | Out-Null

    Get-Item $OFD.FileName
}

$FME = "C:\Program Files\fme\fme.exe"

$SelectedFile = Get-FileName  # -StartHere X\Path\  # optionally pass another Starting Directory

switch ($SelectedFile.Extension) {
    '.fmw' {& $FME "$($SelectedFile.FullName";Break}
    '.par' {& $FME PARAMETER_FILE "$($SelectedFile.FullName";Break}
    default {pause "[$_] Select a valid fme file, press enter to continue";break}
}
于 2019-04-26T16:14:41.533 回答
0

有一种直接调用 FMW 文件并相应地传递参数的方法。请参阅下面的完整详细信息。

FME 可以从 Windows 中的命令行运行:打开命令提示符窗口并键入 FME 会给出下面显示的选项的完整列表。

命令 FME .fmw 将运行特定的工作区。因此,如果可以从命令行调用 FME 工作区,则可以从 DOS 批处理 (.bat) 文件中调用一系列工作区(或具有不同数据集的同一工作区)。

用法

fme <controlFile> [<keyword> <value>]* [--<macroName> <value>]*
fme <scriptfile> [<scriptArgument>*]
fme <licenseFile>.fmelic
fme <command> <arguments>
where:
<controlFile> is one of <mappingFile>.fme or <workspace>.fmw
<scriptFile> is one of <tclScript>.tcl or <pythonScript>.py
<command> is one of:

命令名称参数


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>

参考链接批处理方法

于 2019-04-26T09:25:30.417 回答