我一直在寻找有关 exec cmd.exe 的信息,但找不到任何有用的信息。任何人都可以向我解释以下代码:
exec cmd.exe /c start /wait $buildLoc\\setup.exe /extract_all:C:/setup
我一直在寻找有关 exec cmd.exe 的信息,但找不到任何有用的信息。任何人都可以向我解释以下代码:
exec cmd.exe /c start /wait $buildLoc\\setup.exe /extract_all:C:/setup
让我们分解一下:
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 程序的输出显示为用户。
exec {*}[auto_execok start] /wait $buildLoc\\setup.exe /extract_all:C:\\setup