3

我一直在寻找有关 exec cmd.exe 的信息,但找不到任何有用的信息。任何人都可以向我解释以下代码:

exec cmd.exe /c start /wait $buildLoc\\setup.exe /extract_all:C:/setup
4

2 回答 2

6

让我们分解一下:

exec cmd.exe /c start /wait $buildLoc\\setup.exe /extract_all:C:/setup
#^^^

exec命令启动一个子进程。

exec cmd.exe /c start /wait $buildLoc\\setup.exe /extract_all:C:/setup
#    ^^^^^^^^^^

cmd.exe是一个 Windows“批处理”shell,该/c标志要求它将其参数作为命令运行。

exec cmd.exe /c start /wait $buildLoc\\setup.exe /extract_all:C:/setup
#               ^^^^^^^^^^^

内置的启动cmd.exe命令也是启动另一个程序一种方式。该/wait标志告诉它等到启动的程序结束。

exec cmd.exe /c start /wait $buildLoc\\setup.exe /extract_all:C:/setup
#                           ^^^^^^^^^

一个常规的 TCL 变量;它将在 TCL 内部扩展。

剩下的就是 setup.exe 程序所做的一切(谁知道……)

如果不知道更多关于这里运行的程序(见下文),很难准确地说出为什么exec.cmd /c start /wait需要中间体;我猜 cmd.exe 是加载系统的所有默认环境(而不是使用从 tcl 程序继承的环境),并且start是打开一个终端窗口,因此 setup.exe 程序的输出显示为用户。

于 2012-08-12T12:33:14.147 回答
2

查看auto_execok

exec {*}[auto_execok start] /wait $buildLoc\\setup.exe /extract_all:C:\\setup
于 2012-08-12T15:24:47.750 回答