在尋找執行 .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
- 您的視窗將返回到命令提示字元。