2011-09-06 306 views
46

我正在使用工具“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”,被比较并产生一个结果。然后执行停止。

回答

84

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

您也可以将其更改为一个循环,所以:

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 
+0

做ü意味着“叫”中的每一行的前面我已经给或只需要调用xyz.bat? – rajashekar

+1

我的意思是在你写的每一行前都有'call'(除了可能是'cd')。 – Ben

+0

文件的名称可能会从此格式更改为某个其他名称。有没有办法在指定文件夹路径时读取文件名,然后对每个文件名执行它 – rajashekar

0

您不必插入引号那里没有之间的任何空间标记。

试一下:

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

也许这将解决您的问题。

+0

没有它的不工作 – rajashekar

37

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

+18

我写了我的第一批文件在今天的5年,并遇到了同样的问题。如果有人想知道,添加“调用”的原因是有帮助的,因为直接调用第一个批处理文件会导致第二个批处理文件替换解释器中的第一个批处理文件。当第二批文件退出时,解释器将忘记所有关于您调用的原始批处理文件。调用命令使解释器跟踪调用的bbatch文件停止的位置,并在调用的批处理文件退出时返回到那里。 –

+1

@MarkBessey:是的,从第一个文件中调用**第二个批处理文件**时是绝对正确的,但这里并不是这样,因为被调用的程序是.EXE,它不需要'CALL' ! – Aacini

+0

这是事实,但我认为解决相关问题是值得的,因为这是通过在这里搜索更常见的问题而产生的结果。我也想不出任何其他描述行为会发生的方式,所以我想知道描述是否遗漏了一些细节。 –

0

一个简单而精确的例子:第一命令是CMD/U

感谢伟大的问题和上述的答案。然而,尽管它很简单,但在我的情况下,它们还不够(也许是我的错),所以这是我的问题。我有一个“dir_date_201604.log”文件,其中列出了该文件夹(我正在运行Windows 7专业版64位)的内容。 每次添加或在改几个文件(S)“d:\ MyBak \视频”文件夹,运行此“dirDate_201604.BAT”文件:

Call cmd /u 
dir /od /tw > dir_date_201604_2tb.log 
copy dir_date_201604_2tb.log C:\My\DL 
Call cmd /a 

很长一段时间这个BAT只有2中间命令,它工作正常。但是现在我添加了2个命令“Call cmd/u”和“Call cmd/a”,BAT文件在第一个命令“Call cmd/u”后停止。 我尝试了许多选择,例如在2“cmd”开头删除2“Call”或用2“Start”替换它们,或者在3个单独的BAT文件中逐出4个命令;这也失败了。 感谢任何人提供实际可行的解决方案。

凡尔赛宫,周五2017年1月27日9时41分三十秒+0100,编辑10时05分50秒

相关问题