
执行命令是一种工具,用来执行系统命令或具有指定命令行参数和输出机制的控制台应用程序。
可将关键字与元素窗格上方的搜索功能配合使用。
执行命令元素的关键字有:
执行命令只允许一个输出连接
属性 |
描述 |
|---|---|
名称 |
画布中显示的流程元素名称 |
描述 |
画布中显示的流程元素描述。将光标悬停在流程元素上方时出现的工具提示中也会显示此描述 |
| 执行模式 | 该属性可帮助您配置工具以并行(同时)或串行模式处理工作:
|
命令或路径 |
要执行的系统命令(只允许来自于操作系统的命令!),或要调用的控制台应用程序的绝对路径。
注: 若您不知道应用程序的路径,在应用程序的文档中找到程序的路径,或在磁盘上找到应用程序。在 Windows 上,应用程序一般都安装在 C:\Program Files\ 或 C:\Program Files (x86)\。在 Mac 上,您可使用 Spotlight 查找系统文件(请参阅 http://support.apple.com/kb/HT4355)。
|
参数 |
命令行的剩余部分;在指定的文本中进行以下替换:
即使"输出"设置为"无"或"原始",所有这些替换也会进行(在此情况下,丢弃所生成的任何输出) 占位符(%1、%2和%3)和可能含有空格的参数数值(文件路径等)必须用引号引起! |
输出 |
决定命令如何产生它的输出(工具将输出自动移动到输出连接):
|
复制输入工作 |
若设置为是,传入工作在命令触发之前被复制到临时位置;命令修改输入工作或将文件放在有输入工作的文件夹内时,必须处于打开状态 此属性在某些输出选项中不存在,因为在那些情况中必须始终复制传入的工作 |
输出工作过滤器 |
决定哪一个生成的文件或文件夹是输出文件;若只生成一个文件,则自动明确工作;否则将使用一个简单的启发进行"有根据的猜测" |
输出扩展 |
提供给命令行的输出工作的文件扩展名(例如,%2 的替换);自动表示使用与输入工作相同的扩展名 |
若是以下退出代码则失败 |
若命令的退出代码是下列形式,则工作失败(即将工作移动到问题工作文件夹):
|
范围 |
"n1..n2; n3..n4"指定的范围中,n 代表一个正整数或负整数,缺失表示一个开放的结尾;例如,"-7..-4; 0.." |
若 stdout 含有以下内容,则工作失败 |
若常规控制台输出含有搜索字符串或图案,则工作失败(即将工作移动到问题工作文件夹);空表示忽略此常规控制台输出 |
若 stderr 含有以下内容则失败 |
若控制台错误输出含有搜索字符串或图案,则工作失败(即将工作移动到问题工作文件夹);空表示忽略此控制台错误输出 |
在实际配置执行命令流程元素之前,推荐您先在 Windows 的 Command Prompt 或 Mac 的 Terminal 创建一个工作命令。
记住,Command Prompt 和 Terminal 使用一个框架时,Switch 会直接执行操作系统上的命令。这会导致系统行为的区别。其中最重要的区别就是您总是需要提供完整的地址给 Switch 上的命令行应用程序,即使这在 Command Prompt 或 Terminal 上是不必要的!
对于复杂的情况,启用故障消息日志可能会有帮助(请参阅Switch 首选项:记录日志)。下表列出了运行执行命令工具时会记录的故障消息:
| 调试消息 | 含义 |
|---|---|
| 执行 | Switch 在用实际路径替代占位符后会执行的完整命令。 |
| 结束代码 | 命令的结束代码。Switch 判断命令是否执行成功。 |
| Stdout | 命令执行正常时的命令输出。此输出和您在 Command Prompt 或 Terminal 上执行命令上看到的输出一致。 |
| Stderr | 出现问题时的命令输出。此输出和您在 Command Prompt 或 Terminal 上执行命令上看到的输出一致。 |
若以上故障消息都没有产生,操作系统执行命令失败。检查应用程序的路径是否正确且您是否拥有所需的权限。
将命令的输出重新引导到文本文件是 Terminal 和 Command Prompt 用到的框架的特性之一,该特性无法使用 Switch 中的执行命令工具。
您可以创建一个批处理文件,以使用支持重新引导的框架来满足需要。将该批处理文件当做命令使用并将输入和输出路径作为参数发送到该批处理文件。
例如:
执行命令元素设置:
Script.sh 批处理文件中的内容:
#!/bin/bash
sed "s/\&/\&/g" "${1}" >> "${2}" (This example will replace “&” with “&” in text files)
Command or path: cp
Arguments: Script expression defined:
"var destPath = "/Users/user/Desktop/dest";
var path = job.getPath();
var command = """ + path + "" "" + destPath + """;
command;"
Command or path: C:/Program Files/Application /Application 1.0/Application/Application.exe Arguments: /t "%1" "option with space" "option with space" TASKKILL /IM "Application.exe" <-- WRONG -->
C:\Users\user>dir "c:\folder1\folder2" taskkill /im Application.exe <-- WRONG -->
C:\Users\user>dir "c:\folder1\folder2" <-- CORRECT --> C:\Users\user>taskkill /im Application.exe <-- CORRECT -->
Command or path: tar Arguments: -zxvf "%1" -C "%3"
dir c:/folder/inner folder <-- WRONG --> dir "c:/folder/inner folder" <-- CORRECT -->
最好使用一个批处理文件或框架脚本,而非一个可执行程序或应用程序。
Content of the shell script: #!/bin/bash export PATH="$PATH:/cygdrive/c/Program Files/MySQL/MySQSL Server 5.7/bin" echo $PATH #do everything that you want #start your application for example mysql $1 Command or path: <path to bash> Arguments: <path to sh> <mysql arguments>