2011-09-06 309 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秒

相關問題