我一直在查看有关exec cmd.exe的信息,但我找不到任何有用的信息。任何人都可以向我解释以下代码:
exec cmd.exe /c start /wait $buildLoc\\setup.exe /extract_all:C:/setup
答案 0 :(得分: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
的{{3}}命令也是一种启动另一个程序的方法。 /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
是打开一个终端窗口所以输出设置。 exe程序会显示给用户。
答案 1 :(得分:2)
exec {*}[auto_execok start] /wait $buildLoc\\setup.exe /extract_all:C:\\setup