четверг, 18 августа 2016 г.

Отложенный запуск программ в Windows

Вчера мой перегретый мозг выдал идею - а нельзя ли написать небольшой скрипт, который бы с заданным интервалом запускал программы из списка? Потому что когда пихаешь в автозагрузку штук пять-семь программ, да ещё на не новом, мягко говоря, компьютере, то всё получается грустно. Машинка пыхтит, греется процессором, скрипит жёстким диском и тупит в десять раз больше обычного. А если всё то же самое запускать по очереди, то, может, оно лучше будет? Решил попробовать.

Можно, конечно, сделать, что называется, в лоб. То есть прямо в скрипте поочерёдно вызывать нужные программы, вставляя между ними требуемую задержку. У меня, кстати, на своём компьютере примерно так и сделано. Но то ж у себя, у себя-то я могу любой свой скрипт переписать в любой момент. А тут людям отдавать, да и вообще, интересно.

Поэтому решил, что нужно разнести программную и конфигурационную части по разным файлам. Как будто я настоящий программист, а не .cmd файл в винде пишу :-)

Задуманное у меня получилось совсем не сразу, поскольку "я же не настоящий сварщик". Но получилось.

Итак, в файлик, скажем, 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


И вот с этими тремя строчками я напрыгался! Вроде должно всё работать, а не работает! Курю маны (читаю справку) - вроде всё правильно. Но не работает. Крутил, вертел, писал по разному - в итоге нашёл вариант, в котором заработало. Как-то всё достаточно странно с этими переменными в .cmd файлах.

Теперь другая проблема - человек, на котором я хотел всё это попробовать, куда-то делся. Компьютер в сети, "аська" в сети, но не отвечает. И на звонки не отвечает. Куда пропал? Непонятно. Ну, ладно, поймаю ещё, никуда не денется.

И вот что хочется сказать напоследок. Для подобной задачи, сделать отложенный запуск программ, которая делается в несколько строчек на встроенном скриптовом языке Windows, пишутся специальные утилиты! Там, конечно, интерфейс, кнопочки, все дела... Но ТРИ СТРОЧКИ .cmd файла!

Комментариев нет :

Отправить комментарий