Пакетный файл перестает работать после первой команды - PullRequest
64 голосов
/ 06 сентября 2011

Я использую инструмент «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 ]

103 голосов
/ 06 сентября 2011

Добавьте 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
51 голосов
/ 21 марта 2012

Ответом на вашу проблему является запись CALL HTMLMATCH.EXE (и остальные параметры). Просто используйте CALL перед каждой исполняемой командой в командном файле.

0 голосов
/ 15 октября 2018

Я искал что-то действительно похожее и пробовал, я думаю, все ответы здесь остались, но я наконец нашел решение моей проблемы !!

В моем сценарии я хочу проверить, запущен ли один процесс, если нет, запустить его (.exe), а затем проверить, запущен ли другой процесс, если нет, запустить его тоже (но оставить все программы открытыми) и проблема в том, что первый .exe был запущен, но затем не переместился во второй, потому что ожидал завершения процесса. Это наконец работает для меня с start и магия приходит с ...

/ отдельный

у меня это работает как:

start "program1" /separate program1.exe
other commands

До того, как он остановился после запуска программы1, потому что ожидал, пока он не будет закрыт, я думаю, но этого не произошло, потому что я хотел оставить его открытым. Теперь при запуске / отделении он продолжается с другими командами.

Я нашел это в другом форуме , но дело в том, что это руководство, / отдельный используется для запуска в другом пространстве памяти.

0 голосов
/ 06 сентября 2011

Вам не нужно вставлять кавычки там, где между ними нет пробела.

Попробуйте:

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

Возможно, это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...