簡體   English   中英

為什么在處理第二個“ call”語句之前批處理文件執行停止?

[英]Why does batch file execution stop before processing the second “call” statement?

我對批處理文件非常了解,通常可以設法解決,但遇到了我無法解決的問題。

批處理文件在Windows 7 Ultimate和Windows 10 Professional系統上運行,通常由Scheduler程序調用,盡管有時我只是單擊相關的桌面圖標。 本質上,批處理文件的作用是下載特定文件(電視節目),這些文件在我的情況下位於我的Dropbox帳戶中的外部文本文件中列出。 對於文本文件(TV.txt)中的每一項,都有兩行,一行命名該文件,另一行列出其ID:

name1
ID1
name2
ID2
name3
ID3

批處理文件依次處理文本文件中列出的項目,一個文件處理“ ID”,第二個文件處理“名稱”。

“ 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行上執行下載活動,此后批處理操作終止。

我個人更希望基於“ call”命令的解決方案,但是我不介意。

set $textFile="D:\Dropbox\Get_iPlayer\0-TVdl\tv.txt"
set "idnames="
for /f "delims=" %%a in ('type %$textFile%') do (
 if defined id_names (
  set "id_names="
  call get_iplayer --pid %%a
 ) else (
  set "id_names=Y"
  call get_iplayer --get %%a
 )

這可能有效。 我不知道get_iplayer是什么或做什么。

這里的想法是行內容是交替的,因此在設置為一個值和設置為無值(=清除)之間切換變量id_names可以使我們使用正確的選項執行get_iplayer

請注意,您的代碼將使用pid選項執行get_iplayer或對輸入文件的每一行進行get -這可能會導致問題。

暫無
暫無

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

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