簡體   English   中英

如何打開新的cmd窗口並在其中執行for循環?

[英]How to open new cmd window and execute for-loop in it?

我有一個帶有以下命令的test.cmd文件:

call "cmd /c start echo foo && pause"
call "cmd /c start for /l %%x in (0, 1, 2) do python test.py config%%x"

第一個命令工作正常,表明一般方法應該有效。 帶有for循環的第二個給了我麻煩。

當我直接在CMD窗口中運行此命令(在迭代器之前只有一個%符號)時,它會在循環中按預期在新的CMD窗口中啟動我的python腳本“test.py”3次。

當我從test.cmd運行相同的命令時(這次當然是2%),新的CMD窗口會彈出並立即消失。 我沒有收到任何錯誤消息,也無法保留新窗口。

我懷疑我需要做更多的編碼,但我無法弄清楚正確的語法。 我必須更改什么才能從test.cmd運行這個for循環?

如果你堅持使用call ,還有另一級別的解析,所以在批處理文件中你必須使用:

call "cmd /k start for /l %%%%i in (1,1,10) do echo %%%%i"

(用/k替換/c來查看輸出)

嘗試這個:

call "cmd /c for /l %x in (0, 1, 2) do @python test.py config%x"

當您在命令提示符中執行循環時,您需要單個百分比符號。 並且您需要在cmd /c之后刪除start命令,因為for是內部cmd命令。 @用於在每次迭代時禁止打印提示值。

這個答案詳細闡述了帖子標題中陳述的核心問題,而不是您提供的示例代碼。


要在單獨的( cmd )窗口中運行for循環,需要start命令。 此外,應該給出一個顯式的cmd實例,以避免在調用內部命令行時出現start問題(例如,括號可能導致錯誤),並且還可以控制循環完成后新窗口發生的情況。

以下命令行在新的cmd窗口中運行for循環,該循環在循環結束后保持打開(對調試非常有用):

start "" /WAIT cmd /K "for /L %%X in (0,1,2) do echo %%X"

在新窗口中鍵入exit以關閉它。 要最終自動關閉新窗口,請用/C替換/K

如果您不希望主(調用)批處理腳本等待循環完成並關閉新窗口,請刪除/WAIT開關。 這樣命令行就會啟動,但主腳本會立即繼續執行。 這允許您同時在單獨的窗口中運行多個for循環。


這種技術不僅限於調用for唯一循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM