2

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

Пример:

command 1
reboot
command 2
reboot
command 3
reboot

3 ответа3

4

Одним из способов было бы создать раздел реестра HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\ , указав скрипт для запуска при запуске. Сценарий будет:

  • script01.bat делает свою работу и пишет HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\ со значением "путь к script02.bat"

  • script02.bat делает свою работу и пишет HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce\ со значением «путь к script03.bat» и так далее.

2

Этот скрипт - очень хорошее решение! Я попробовал и могу подтвердить, что это работает!

Однако я бы рекомендовал изменить %~n0 и %~dpnx0 на "%~n0" и "%~dpnx0" чтобы предотвратить ошибки синтаксиса Regedit.

@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
)
0

Посмотрите на BoxStarter. http://boxstarter.org

Это должно дать вам то, что вам нужно для перезагрузки и продолжения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .