CMD запускает EXE, запускает HTML, ждет закрытия и запускает окончательный EXE

хотел бы иметь BAT-файл, который запускает set-keys.EXE, запускает default.html, а затем, когда пользователь закрывает html, запускает set-keys-back.EXE. (все они находятся в одном каталоге вместе). Это может быть запущено с компакт-диска, поэтому у меня может не быть возможности записать файл флага, а затем подождать, чтобы увидеть, удален ли он, чтобы продолжить. Уже пробовали START/WAIT, но увидели, что WAIT на самом деле не будет ждать 32-битных приложений с графическим интерфейсом. Рассмотрев один пакетный файл, вызывающий другой, все еще не повезло. Предпочел бы, чтобы PAUSE не было, и пользователю приходилось возвращаться к CMD, чтобы просто нажать клавишу - кажется неуклюжим. Когда они закрываются из HTML, я запускаю top.window.close(). было бы неплохо, если бы я мог поместить какой-нибудь другой код после этого, но я думаю, что как только окно закрывается, оно закрывается - больше никакой обработки. не удалось запустить выполнение WShell. Строка состояния HTML просто говорит об ошибке на странице - нет информации. Хотелось бы услышать ваши мысли...


person Jas    schedule 11.01.2012    source источник


Ответы (1)


Обновление 2: я только что понял, что вы можете запускать IE напрямую, без использования команды start:

@echo off
rem You can use %SCRIPTDIR% to refer to the file to load, if you like
rem Note that %SCRIPTDIR% will contain a trailing slash!
set SCRIPTDIR=%~dp0

echo Testing this script...
C:\PROGRA~1\INTERN~1\iexplore.exe %SCRIPTDIR%foo.html
echo Continuing the script...

Этот пример работает для меня (32-разрядная версия Windows XP) и ждет, пока я закрою окно браузера, чтобы продолжить.

Обновление. Вот обновленный блок кода, который запускает Internet Explorer. Обратите внимание, что я использую короткий путь к исполняемому файлу iexplore.exe и указываю полный путь к загружаемому файлу:

@echo off
echo Testing this script...
start /wait /min cmd /C "C:\PROGRA~1\INTERN~1\iexplore.exe C:\foo.html"
echo Continuing the script...

Первоначальный ответ: вы упомянули о попытке использовать команду start /wait, но как вы явно написали ее? Следующий пример пакетного сценария работает для меня в Windows 7 x64:

@echo off
echo Testing this script...
start /wait /min cmd /C "%windir%\system32\notepad.exe foo.html"
echo Continuing the script...

В этом примере сценарий не продолжит выполнение, пока пользователь не закроет приложение «Блокнот». Единственным недостатком здесь является то, что всплывает дополнительное командное окно, но с помощью параметра /min мы можем запустить его свернутым.

person Jonah Bishop    schedule 11.01.2012
comment
Это отлично работает для блокнота. могу ли я заставить его запускать default.html? Я пробовал полный путь к iexplore.exe, просто iexplore.exe... когда я запускаю его, он просто запускает все три команды последовательно, вы даже не видите IE вообще. ECHO OFF START /B put_keys.exe start /wait/min cmd /C iexplore.exe +default.html START /B put_keys_back.exe - person Jas; 11.01.2012
comment
Это работает для меня: start /wait /min cmd /C "C:\PROGRA~1\INTERN~1\iexplore.exe C:\temp\test.html". Мне нужно закрыть IE, чтобы скрипт продолжил работу. - person Jonah Bishop; 11.01.2012
comment
пока супер отлично. Я согласен с тем, что вы говорите. есть ли шанс использовать относительный путь или локальный путь для default.html? Это будет работать с компакт-диска, и вы знаете, что у некоторых людей он будет как диск D:, у некоторых может быть E: или кто знает. Он находится в том же каталоге, что и пакетный файл и EXE-файлы, и мы надеялись, что Windows сначала по умолчанию будет использовать этот каталог. - person Jas; 11.01.2012
comment
Вы можете получить каталог скрипта, используя этот фрагмент: set STARTDIR=%~dp0 (все, что он делает, это модифицирует %0). См. эту статью для получения дополнительной информации о модификаторах параметров пакетного файла. Я еще раз обновлю свой ответ с помощью этого трюка. - person Jonah Bishop; 11.01.2012
comment
shellexecute в файле autorun.inf вызывает iexplore и остается в резидентном каталоге для загрузки default.html. Я готов попробовать что угодно, чтобы дождаться закрытия HTML, прежде чем запускать последний файл put-keys-back.exe. - person Jas; 11.01.2012
comment
Я обновил свой ответ, указав метод получения каталога, в котором находится скрипт. Затем вы можете использовать этот каталог, чтобы добраться до любого файла, который вы хотите (я полагаю, что вы могли бы даже указать относительный путь таким образом). - person Jonah Bishop; 11.01.2012
comment
Ты жжешь. Тысяча благодарностей. На самом деле для меня это сработало лучше, если я использовал SCRIPTDIR=%~dp1, а также удалил C:\Progra~1 из строки. Просто накормил его %SCRIPTDIR%+default.html, и он сам запускает IE и остается в резидентном каталоге. Все хорошо, что хорошо кончается. - person Jas; 12.01.2012