為什麼在 .bat 中使用「cmd」可以正確解析?

為什麼在 .bat 中使用「cmd」可以正確解析?

在尋找執行 .bat 腳本並使視窗cmd在完成後保持活動狀態的正確方法時,我了解到兩種流行的方法之一是包含cmd /k file.bat在腳本中,其中「file.bat」指的是其自身。

雖然我理解上述的功能結果,但我似乎無法理解的是,從概念上講,它是如何正確執行和解析的?

根據我自己的無知推斷,我認為這與論證有關/k,其功能解釋為:

執行字串指定的命令但保留

儘管如此,即使它使腳本能夠防止自身循環,它如何不破壞其自身的執行?

如果這是非常明顯的,或者如果我誤解了一些基本的東西,我很抱歉,我沒有接受過關於該主題的正規教育或培訓。

編輯:

好吧,我真是太傻了!我在答案中看到這裡文法按照我上面指出的方式排列...循環腳本,所以我應該先對自己進行實際測試,然後再在沒有適當上下文的情況下盲目相信(而且我總是說“信任但驗證”,太偽善了

答案1

至於為什麼cmd要解決,上面有一些很好的解釋堆疊溢位- 本質上cmd被解釋為%ComSpec%,它是 cmd.exe 完整位置的系統環境變數(通常為C:\Windows\System32\cmd.exe)。

就你的問題的上下文而言 - 如果你有cmd /k yourbatfile.batyourbatfile.bat ,它就會循環。如果您出於故障排除原因希望視窗保持開啟狀態,我強烈建議您pause在其末尾/在您遇到問題的任何部分之後添加 。

的寫法/k這裡有點不同因為它說它“返回到命令提示字元” - 本質上,添加/k就像打開 cmd.exe 並使用它,而沒有/k就像從“運行”視窗執行命令。

您可以透過開啟「運行」並執行來測試這一點ipconfig /all- 完成後您的視窗將立即關閉ipconfig;但如果您打開“運行”並執行cmd /k ipconfig /all- 您的視窗將返回到命令提示字元。

相關內容