我已經批處理文件一個相當基本的知識,通常設法得到通過,但是擊中我解決不了問題。爲什麼在處理第二個「調用」語句之前批處理文件執行停止?
下的批處理文件在Windows 7旗艦版和Windows 10專業版系統上運行,通常由一個調度程序調用,雖然有時我只需點擊相關的桌面圖標。從本質上講,該批處理文件的作用是下載它們在外部文本文件中列出的,在我的情況下,特定的文件(電視節目),位於我的Dropbox帳戶。在文本文件(TV.txt)每個項目有兩條線,一個命名的文件,其他上市公司編號:
name1
ID1
name2
ID2
name3
ID3
下的批處理文件相繼通過在文本文件中列出的項目工作,一個文件在「ID」上工作,第二個在「名稱」上工作。
的 「標識」 文件(TV-pid.cmd)由以下部分組成:
set $textFile="D:\Dropbox\Get_iPlayer\0-TVdl\tv.txt"
for /f "delims=" %%a in ('type %$textFile%') do get_iplayer --pid %%a
的 「名」 的文件(TV-nopid.cmd)由以下部分組成:
set $textFile="D:\Dropbox\Get_iPlayer\0-TVdl\tv.txt"
for /f "delims=" %%a in ('type %$textFile%') do get_iplayer --get %%a
每個批處理文件效果很好自身,問題是當我嘗試將二者結合成一個單一的批處理文件。
如果創建一個「組合」批處理文件(tv.cmd):
call tv-pid.cmd
call tv-nopid.cmd
第一「呼叫」被執行,但在調用第二個文件之前,批處理操作終止。
同樣如果我創建一個「組合」批處理文件(不使用「呼叫」命令)
set $textFile="D:\Dropbox\Get_iPlayer\0-TVdl\tv.txt"
for /f "delims=" %%a in ('type %$textFile%') do get_iplayer --pid %%a
set $textFile="D:\Dropbox\Get_iPlayer\0-TVdl\tv.txt"
for /f "delims=" %%a in ('type %$textFile%') do get_iplayer --get %%a
同樣的情況,其間歇操作終止之後,執行第2行的下載活動。
個人而言,我寧願基礎上的「呼叫」命令的解決方案,但我不介意。
這個:http://stackoverflow.com/questions/14731877/a-bat-file-call-or-not-to-call-that-is-the說_all批處理文件處理將停止(控制將不會返回到調用者)如果CALLed批處理文件有一個致命的語法錯誤。所以看起來有可能完全退出的原因。如果您按照該帖子的建議使用'cmd/c',該怎麼辦? –
由於我不熟悉'get_iplayer',我建議'呼叫get_iplayer'可以解決這個問題,但我會後這可能是更容易還是一個較長的響應。 – Magoo
謝謝Nick.McDermaid,問題排序!它現在工作了! – user338034