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

时间:2011-09-06 12:39:22

标签: file batch-file

我正在使用'HTML Match'工具来比较两个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',并生成结果。然后执行停止。

4 个答案:

答案 0 :(得分:102)

在您正在运行的命令前添加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

答案 1 :(得分:48)

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

答案 2 :(得分:0)

您不必在没有任何空格标记的地方插入引号。

试试:

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

也许它会解决你的问题。

答案 3 :(得分:0)

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

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

/分开

它对我来说是:

start "program1" /separate program1.exe
other commands

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

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