在寻找运行 .bat 脚本的正确方法并使窗口cmd
在完成时保持活动状态时,我了解到两种流行方法之一是包含cmd /k file.bat
在脚本中,其中“file.bat”指的是它自己。
虽然我理解上述的功能结果,但我似乎无法理解它从概念上如何正确执行和解决?
从我自己的无知推断,我认为这与论点有关/k
,论点的功能解释如下:
执行字符串指定的命令,但保留
但是,即使它能够让脚本自行防止循环,它又怎么会不破坏自身的执行呢?
如果这一点太明显或者我误解了一些基本的东西,我深感抱歉,因为我没有接受过这方面的正规教育或培训。
编辑:
好吧,我真傻!我在答案中看到了这里语法是按照我上面指出的方式排列的……做循环播放脚本,所以我应该先自己测试一下,然后再盲目相信没有适当背景的东西(我总是说“相信但要核实”,真是个伪君子
答案1
至于为什么cmd
解析,网上有几个很好的解释堆栈溢出- 本质上cmd
被解释为%ComSpec%
,它是系统中 cmd.exe 的完整位置(通常C:\Windows\System32\cmd.exe
)的环境变量。
至于您问题的背景 - 如果您cmd /k yourbatfile.bat
在 yourbatfile.bat 中,它只会循环。如果您希望窗口保持打开状态以进行故障排除,我强烈建议您pause
在它末尾/您遇到问题的任何部分之后添加一个。
措辞/k
是这里有点不同因为它说它“返回到命令提示符” - 本质上,添加/k
就像打开 cmd.exe 并使用它,而没有/k
就像从运行窗口执行命令。
您可以通过打开运行并执行来测试这一点ipconfig /all
- 您的窗口将在ipconfig
完成后立即关闭;但如果您打开运行并执行cmd /k ipconfig /all
- 您的窗口将返回到命令提示符。