我已经批处理文件一个相当基本的知识,通常设法得到通过,但是击中我解决不了问题。为什么在处理第二个“调用”语句之前批处理文件执行停止?
下的批处理文件在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