Подтвердить что ты не робот

Пакетный файл перестает работать после первой команды

Я использую инструмент "HTML Match" для сравнения двух файлов HTML. Поскольку мне приходится сравнивать многие файлы, я создаю пакетный файл, например, followion. Например, я даю только пять наборов файлов.

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"

Когда я запускаю этот командный файл в командной строке, только первая строка, то есть только "a1.html", сравнивается и дает результат. Затем выполнение останавливается.

4b9b3361

Ответ 1

Добавьте 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

Ответ 2

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

Ответ 3

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

Попробуйте следующее:

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

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

Ответ 4

Простой, но точный пример: первая команда - cmd/u

Спасибо за большой вопрос и ответы выше. Однако их не хватало (может быть, моя вина) в моем случае, несмотря на его простоту, поэтому вот моя проблема.

В моей папке "D:\MyBak\Videos" у меня есть файл "dir_date_201604.log", в котором перечислены содержимое этой папки (я запускаю Windows 7 pro 64bit). Каждый раз, когда я добавляю или изменяю несколько файлов в этой папке "D:\MyBak\Videos", я запускаю этот файл "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 команды среднего уровня, и она работала нормально. Однако теперь, когда я добавил две команды "Call cmd/u" и "Call cmd/a", файл BAT останавливается после первой команды "Call cmd/u". Я попробовал несколько альтернатив, например, удаление 2 "Звонок" в начале 2 "cmd" или замена их на 2 "Пуск" или депортация 4 команд в 3 отдельных файлах BAT; это тоже не удается. Спасибо In Advance всем, у кого есть решение, которое действительно работает.

Версаль, пт 27 янв 2017 09:41:30 +0100, отредактирован 10:05:50

Ответ 5

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

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

/отдельный

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

start "program1" /separate program1.exe
other commands

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

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