Возобновление пакетного сценария после перезагрузки компьютера

У меня есть несколько старых машин под управлением Windows 2000 Pro и IE 5.0, которые я хочу обновить до IE 6 с помощью Silverlight. Я загрузил установщики IE6 и Silverlight с веб-сайтов Microsoft, и, к счастью, у них обоих есть параметры командной строки, позволяющие запускать их в "тихом режиме".

Я поместил две команды в пакетный сценарий DOS и запустил его, но установщик IE6 требует автоматической перезагрузки компьютера, поэтому вопрос заключается в том, как возобновить сценарий и запустить вторую команду (установить Silverlight).

Мой пакетный файл сейчас очень прост:

ie6setup.exe /Q
silverlight.exe /q

Насколько я знаю, пакетные файлы не могут возобновить выполнение после перезагрузки компьютера. Есть ли способ заставить их сделать это? есть ли другой способ выполнить то, что мне нужно.

Спасибо


person del.ave    schedule 26.07.2010    source источник


Ответы (4)


Вы можете поместить вторую команду в эксклюзивный пакетный файл и добавить запись в regedit для автоматического выполнения этого пакетного файла при запуске Windows, чтобы silverlight выполнялся после перезагрузки компьютера.

Вы слышали о msconfig? В некоторых системах regedit PATH, который вы ищете, выглядит следующим образом:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

Но вы можете проверить это. Если вы хотите создать пакетный файл для записи этого ключа в реестр, вам, вероятно, следует взглянуть на это руководство.

person karlphillip    schedule 26.07.2010
comment
Не хотел иметь несколько файлов сценариев и возиться с реестром, но это кажется единственным способом обновить эти старые машины. - person del.ave; 27.07.2010

На основании сообщения Тима, которое при тестировании добавило «два» к пакетному файлу, что привело к невозможности найти пакетную метку «onetwo», поэтому было изменено чтение и запись «текущей» переменной из отдельного текстового файла, оставив пакет файл нетронутый;

@echo off
call :Resume
goto %current%
goto :eof

:one
::Add script to Run key
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v %~n0 /d %~dpnx0 /f
echo two >%~dp0current.txt
echo -- Section one --
pause
shutdown -r -t 0
goto :eof

:two
echo three >%~dp0current.txt
echo -- Section two --
pause
shutdown -r -t 0
goto :eof

:three
::Remove script from Run key
reg delete HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v %~n0 /f
del %~dp0current.txt
echo -- Section three --
pause
goto :eof

:resume
if exist %~dp0current.txt (
    set /p current=<%~dp0current.txt
) else (
    set current=one
)
person Valiante    schedule 06.11.2013
comment
Это очень хорошо, я буду тестировать с тихой установкой драйверов с возможностью перезагрузки :) - person alcohol is evil; 22.04.2016

Если вы выполняете установку IE6 с помощью команды ie6setup.exe /q /r:n, он не перезагрузится автоматически (см. эту страницу для подробностей). Тогда теоретически вы могли бы сразу установить SilverLight, а затем перезагрузиться; но есть шанс, что установка SL откажет из-за необходимости перезагрузки, но попробовать не помешает...

person ewall    schedule 26.07.2010
comment
Хороший трюк. Я попробовал, и, как вы сказали, Silverlight не распознает новый браузер до перезагрузки компьютера. - person del.ave; 27.07.2010
comment
О, грустно... но не удивительно. - person ewall; 27.07.2010

Я знаю, что это немного устарело, но это работает потрясающе:

@echo off
call :Resume
goto %current%
goto :eof

:one
echo two >>myfile.cmd
::REBOOT HERE
goto :eof

:two
echo resumed here
goto :eof

:resume
rem THIS PART SHOULD BE AT THE BOTTOM OF THE FILE
set current=one
person Tim Grey    schedule 07.06.2012
comment
.... он должен быть связан с настройкой реестра для запуска сценария ... или просто поместить его в папку автозагрузки. - person Tim Grey; 07.06.2012