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

File 批处理文件在第一个命令后停止运行,file,batch-file,File,Batch File,我正在使用“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\comp

我正在使用“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”)被比较并生成结果。然后执行停止。

在正在运行的命令前面添加
调用

也可以将其更改为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

您不必在没有空格的地方插入引号

试试看:

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

也许这会解决你的问题

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

我正在寻找真正类似的东西,并尝试了这里留下的所有回复,但我最终找到了问题的解决方案

在我的脚本中,我想检查一个进程是否正在运行,如果没有,启动它(a.exe),然后检查另一个进程是否正在运行,如果没有,也启动它(但保持所有程序处于打开状态),问题是第一个.exe已启动,但由于等待进程结束,因此没有移动到第二个。 我终于可以用开始了,神奇的是

/separate

它对我的作用是:

start "program1" /separate program1.exe
other commands
在它启动program1后停止之前,因为它一直在等待关闭,我想,但这不会发生,因为我想让它保持打开状态。 现在使用start/separate命令,它将继续使用其他命令


我在中找到它,但问题是它是手册,/separate用于在另一个内存空间中启动

你的意思是在我给出的每一行前面“call”还是只调用xyz.bat?我的意思是在你写的每一行前面
call
(可能除了
cd
)。文件名可能会从这种格式更改为其他名称。如果指定了文件夹路径,是否有方法读取文件名,然后对每个文件名执行该文件名是的,for循环将执行该操作。改变你需要的。在cmd窗口中键入有关
的帮助,以了解您需要什么。添加
调用
帮助了吗?我今天写了5年来的第一批文件,遇到了同样的问题。如果有人想知道,添加“call”之所以有帮助,是因为直接从第一个批处理文件中调用第二个批处理文件会导致第二个批处理文件替换解释器中的第一个批处理文件。当第二个批处理文件退出时,解释器将完全忘记您调用的原始批处理文件。call命令使解释器跟踪调用的bbatch文件停止的位置,并在被调用的批处理文件退出时返回该位置。@MarkBessey:是的,当从第一个批处理文件中调用第二个批处理文件时,您完全正确,但这里的情况并非如此,因为调用的程序是.EXE,它不需要调用
!这是真的,但我认为有相关问题的解决方案是值得的,因为这是通过在这里搜索更常见的问题得到的结果。我也想不出任何其他方式会发生所描述的行为,所以我想知道描述是否缺少一些细节。@Aacini似乎某些可执行文件退出时带有一个奇怪的退出代码,阻止批处理文件的其余部分运行,在这种情况下,使用调用在不同批处理文件中运行该文件的解决方法是有效的。