2017-01-02 160 views
1

我一直在嘗試運行多個cmd來執行不同參數的命令,但cmd不起作用。這裏是運行文件的代碼使用bat文件運行多個cmds?

cd\ 
cd F:\A 5th Semester Data\CN\Project\ 
start cmd \k python test.py A 5000 configA.txt 

下一個語句將有B,5001 configB.txt等等。 請幫忙解決這個問題。 最好的問候。

+0

你不能做到這一點的Python腳本里面?使用python來增加值會更容易。 – furas

+0

任務要求是我們在cmd中給它的參數。但我們必須多次運行它,但我無法弄清楚。 –

+3

批次有自己的函數'for',所以你可以嘗試使用它。或者你可以編寫Python腳本,它會用不同的參數多次執行'python test.py'。 – furas

回答

0

通過在命令提示符窗口中運行cmd /?,包含空格字符的文件和文件夾路徑必須用雙引號括起來,如最後一個幫助頁面輸出的最後一段所述。

幫助也解釋了13759你保持控制檯窗口打開後,Windows命令解釋程序完成的python Python的成品test.py執行後,這意味着執行參數/K

和命令CD需要參數/D的使用,如果驅動器應該也切換爲幫助輸出通過在命令提示符窗口中運行cd /?解釋。

cd /D "F:\A 5th Semester Data\CN\Project" 
start cmd /k python test.py A 5000 configA.txt 

命令START的幫助下是在命令提示窗口start /?其中列出並解釋所述參數/Dpath運行輸出。

所以上面的兩行可也寫成一行代碼:

start "Python Processing" /D"F:\A 5th Semester Data\CN\Project" %SystemRoot%\System32\cmd.exe /K python.exe test.py A 5000 configA.txt 

但它看起來像什麼,你真正需要的是包含行的批處理文件:

cd /D "F:\A 5th Semester Data\CN\Project" 
python.exe test.py A 5000 configA.txt 
python.exe test.py B 5001 configB.txt 
rem and so on 

或者使用一個FOR循環,並與延遲擴展的環境變量:

@echo off 
setlocal EnableExtensions EnableDelayedExpansion 
cd /D "F:\A 5th Semester Data\CN\Project" 
set "Number=5000" 
for %%I in (A B C D E) do (
    python.exe test.py %%I !Number! config%%I.txt 
    set /A Number+=1 
) 
endlocal 

要了解使用的命令及其工作方式,請打開命令提示符窗口,在其中執行以下命令,並仔細閱讀爲每個命令顯示的所有幫助頁面。

  • cd /?
  • echo /?
  • endlocal /?
  • for /?
  • set /?
  • setlocal /?