2017-05-16 45 views
0

運行一個批處理文件,有沒有什麼辦法,你可以繼續在新的控制檯運行一個批處理腳本。我有一個很大的批處理腳本,我希望它能夠生成連接到新控制檯的cmd shell。這些cmd密碼將繼續運行腳本,腳本的另一部分或顯示數據;不要緊。主腳本也應該保持打開狀態,所以如果需要的話,我可以重新運行命令。繼續在新的控制檯

+0

如果使用在新的shell命令前面調用,然後批處理文件將繼續運行:call cmd another.bat – johan

+0

這就是我不想調用另一個.bat文件的要點。我希望主要的一個創建新的cmd窗口,並繼續在新窗口中運行腳本。 – IGRACH

+0

'start'在一個新的控制檯(它不是一個cmd窗口)中打開一個控制檯程序,例如cmd.exe,無需等待它退出。 – eryksun

回答

1

當你需要這種行爲的一般解決方法是一個老式的跳轉。 (您使用的是恐龍時代的語言,所以有時你會需要恐龍時代的工具。)

在批處理文件的第一行,

@if "%1" == "/goto" goto :%2 

當你要啓動您的批處理文件的一個單獨的實例,從一個特定的標籤開始,

start cmd /c "%0" /goto mylabel 

一個完整的例子:

if "%1" == "/goto" goto :%2 

echo Hello! 

start cmd /c "%0" /goto mylabel 

echo Goodbye! 

goto :eof 

:mylabel 

echo Hello! 

pause 
+0

可以在命令行,環境變量,臨時文件或註冊表項中傳遞數據。可以使用基於少量使用的[Mailslots](https://msdn.microsoft.com/zh-cn/library/aa365576)的waitfor.exe來同步操作。 – eryksun

+0

不幸的是,匿名管道將無法工作,因爲創建一個新的控制檯會重置標準句柄值。該過程將繼承管道句柄,但它將無法使用它。 – eryksun