Ситуация: в автозапуске несколько программ, поэтому компьютер долго и мучительно загружается.
Задача: разнести запуск программ по времени, чтобы они запускались не все разом, а друг за другом, с паузами. Для этого есть отдельные утилиты, но можно всё сделать средствами Windows.
Итак, напишем скрипт appstart.cmd. Список запускаемых программ будет браться из текстового файла app_list.txt. Файл-список должен находиться в одном каталоге со скриптом.
Файл app_list.txt - это список, каждая строка которого содержит на первой позиции время задержки в секундах (на самом деле нет, но об этом позже) и, после точки с запятой в качестве разделителя, полный путь к запускаемому файлу, в кавычках:
10;"C:\Program Files\7-Zip\7zFM.exe"
20;"C:\Program Files\IrfanView\i_view64.exe"
Собственно, скрипт:
@ECHO OFF
SETLOCAL
SET APP_LIST=%~dp0\app_list.txt
FOR /F "tokens=1,2 delims=;" %%i in (%APP_LIST%) DO (
ping -n %%i 127.0.0.1 2>&1>NUL
START "" %%j
)
:END
Что он делает.
В строке SET APP_LIST=%~dp0\app_list.txt устанавливается переменная APP_LIST, в которую записывается путь к файлу-списку. Конструкция %~dp0 означает, что файл находится в том же каталоге, что и скрипт.
В строке FOR /F "tokens=1,2 delims=;" %%i in (%APP_LIST%) в цикле читаются строки из файла-списка. Ключ tokens=1,2 говорит, что из строки выбираются две подстроки, разделённые точкой с запятой. Разделитель задаётся ключом delims=;.
Строка ping -n %%i 127.0.0.1 2>&1>NUL создаёт задержку перед запуском программы из списка. Переменная %%i это как раз первая подстрока из считанной строки, то есть цифры, что стоят до точки с запятой. Задержка формируется тем, что пингуется локальный адрес компьютера. На каждый пинг уходит приблизительно секунда. Так что можно считать, что время задержки задаётся в секундах.
Строка START "" %%j запускает на исполнение программу из списка. Переменная %%j это вторая часть строки списка, следующая после точки с запятой.
Таким образом, в цикле считываются все строки списка, разбиваются на две части - время задержки и путь к запускаемому файлу. И по очереди запускаются все программы из списка. А не одновременно, как при обычной автозагрузке. И не нужно устанавливать никаких дополнительных программ для управления автозагрузкой.