第一个命令后批处理文件停止运行


76

我正在使用“ HTML匹配”工具比较两个HTML文件。由于必须比较许多文件,因此我创建了一个类似后续操作的批处理文件。例如,我仅给出五组文件。

cd "C:\Program Files\HTML Match"
HTMLMATCH.EXE "D:\Raj\compare1\a1.html" "D:\Raj\compare2\a1.html" "D:\Raj\compare_res\a1.html"
HTMLMATCH.EXE "D:\Raj\compare1\a2.html" "D:\Raj\compare2\a2.html" "D:\Raj\compare_res\a2.html"
HTMLMATCH.EXE "D:\Raj\compare1\a3.html" "D:\Raj\compare2\a3.html" "D:\Raj\compare_res\a3.html"
HTMLMATCH.EXE "D:\Raj\compare1\a4.html" "D:\Raj\compare2\a4.html" "D:\Raj\compare_res\a4.html"
HTMLMATCH.EXE "D:\Raj\compare1\a5.html" "D:\Raj\compare2\a5.html" "D:\Raj\compare_res\a5.html"

当我在cmd提示符下执行此批处理文件时,仅第一行(即仅'a1.html')被比较并产生结果。然后执行停止。

Answers:


127

call在您正在运行的命令前添加。

您也可以将其更改为for循环,因此:

FOR /L %%i in (1,1,5) DO CALL HTMLMATCH.EXE D:\Raj\compare%%i%%\a%%i%%.html D:\Raj\compare%%i%%\a%%i%%.html D:\Raj\compare_res\a%%i%%.html

您是说在我给的每一行前面打个“电话”还是直接打xyz.bat?
rajashekar 2011年

1
我的意思是call在您写的每一行前面(可能还有cd)。

文件名可能会从此格式更改为其他名称。如果指定了文件夹路径,有没有一种方法可以读取文件名,然后为每个文件名执行该文件名
rajashekar,2011年

是的,for循环会做到这一点。更改所需的内容。help for在cmd窗口中键入以查找所需内容。添加call帮助了吗?

58

您的问题的答案是编写CALL HTMLMATCH.EXE(以及其余参数)。只需CALL在批处理文件中的每个可执行命令前面使用。


34
我今天写了大约5年的第一个批处理文件,却遇到了同样的问题。万一有人怀疑,添加“ call”有帮助的原因是因为直接从第一个批处理文件中调用第二个批处理文件会导致第二个批处理文件替换解释器中的第一个批处理文件。当第二个批处理文件退出时,解释器将完全忘记您调用的原始批处理文件。call命令使解释器跟踪调用的bbatch文件的保留位置,并在被调用的批处理文件退出时返回。
马克·贝西

1
@MarkBessey:是的,从第一个批处理文件中调用第二个批处理文件时,您绝对正确,但是这里不是这种情况,因为被调用的程序是.EXE,并且不需要CALL
阿西尼(Aacini)2013年

的确如此,但是我认为有必要解决相关问题,因为这是通过在此处搜索更常见的问题得出的结果。我也无法想到所描述的行为会发生的任何其他方式,因此我想知道描述是否缺少一些细节。
Mark Bessey 2013年

1
@Aacini,似乎某些可执行文件以奇怪的退出代码退出,阻止了批处理文件的其余部分运行,在这种情况下,使用CALL在其他批处理文件中运行该解决方案的方法可行。
Mahn

1

我一直在寻找真正相似的东西,并尝试了所有答复,但终于找到了解决问题的方法!

在我的脚本中,我想检查一个进程是否正在运行,如果没有,请启动它(一个.exe),然后检查另一个进程是否正在运行,如果不是,也要启动它(但请打开所有程序),问题是表示第一个.exe已启动,但由于正在等待进程结束而没有移至第二个。终于从头开始为我工作,并且魔力随之而来...

/分离

它对我有用:

start "program1" /separate program1.exe
other commands

我认为,在启动program1之后由于它一直在等待直到关闭而停止运行,但是这不会发生,因为我想让它保持打开状态。现在以开始/ separate开始,继续其他命令。

我在另一个论坛上找到了它,但事实是它是手册,/ separate用于在另一个内存空间中启动。


-1

您不必在两者之间没有空格的地方插入引号。

试试看:

HTMLMATCH.EXE D:\Raj\compare1\a1.html D:\Raj\compare2\a1.html D:\Raj\compare_res\a1.html

也许它将解决您的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.