Ответ 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
Я использую инструмент "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", сравнивается и дает результат. Затем выполнение останавливается.
Добавьте 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
Ответом на вашу проблему является написание CALL HTMLMATCH.EXE
(и остальных параметров). Просто используйте CALL
перед каждой исполняемой командой в командном файле.
Вам не нужно вставлять кавычки, где между пробелами нет пробела.
Попробуйте следующее:
HTMLMATCH.EXE D:\Raj\compare1\a1.html D:\Raj\compare2\a1.html D:\Raj\compare_res\a1.html
Возможно, это решит вашу проблему.
Простой, но точный пример: первая команда - 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
Я искал что-то действительно похожее и попробовал, я думаю, все ответы, оставленные здесь, но я наконец нашел решение своей проблемы !!
В моем сценарии я хочу проверить, запущен ли один процесс, если нет, запустите его (.exe), а затем проверьте, запущен ли другой процесс, если нет, запустите его тоже (но оставьте все программы открытыми), и проблема заключается в том, что первый .exe был запущен, но затем не переместился на второй, потому что ожидал завершения процесса. Это наконец работает для меня с самого начала, и магия приходит с...
/отдельный
у меня это работает как:
start "program1" /separate program1.exe
other commands
Думаю, до того, как он остановился после запуска программы1, потому что ожидал, пока он не будет закрыт, но этого не произошло, потому что я хотел оставить его открытым. Теперь при запуске/отделении это продолжается с другими командами.
Я нашел это на другом форуме, но дело в том, что это руководство,/отдельный используется для запуска в другом пространстве памяти.