"Прога" для автоматической смены обоев весом меньше кило. Наглядно о возможностях командной строки и BAT файлов

Почему «прога» — в кавычках? Да потому, что написание пакетных файлов было делом нормального юзера, а не программера. Теперь часто можно слышать о «программировании BAT файлов». А это почему? Да потому, что юзер, да и админ иной, нынче графическим интерфейсом шибко развращен. Да и возможностей у батников прибавилось, а значит и сложности. Но сейчас не об этом. Сейчас я хочу показать файл в несколько строчек, который может случайным образом менять обои рабочего стола Windows. И рассказать, как сделать, чтобы это происходило автоматически — при входе в систему, или по времени. Так, как это можно замутить в Семерке, только способом, неизмеримо более легким для машины и полезным для кругозора.


Для начала, надо сделать на диске C каталог WPC, а в нем каталог PIC. Можно и иначе организовать, но тогда строки ниже придется не просто скопипастить, а еще и переправить чуток. А так — только 50 на свое значение поменять. Значит, папочки сделали. Теперь надо подготовить картинки в формате BMP и дать им имена от 1 до… Короче, 1.bmp, 2.bmp, 3.bmp, 4.bmp, 5.bmp, и так далее. Именно этот пример — для пятидесяти картинок. Если их другое количество, надо будет 50 в файле заменить на число картинок. Так, картинки есть, теперь копируем то что ниже  

del /q C:\wpc\pic\*.bmp

set /a rn=1+50*%random%/32768
copy c:\WpC\%rn%.bmp c:\wpc\pic
ren C:\wpc\pic\*.bmp changed.bmp
rundll32.exe user32.dll,UpdatePerUserSystemParameters

и вставляем в текстовый файл. При копировании отсюда могут потянуться пробелы в концах строк, их надо удалить. Сохраняем с именем, например wpc и меняем расширение на bat. Чтобы в Проводнике было видно расширение файла и можно было его сменить, надо в свойствах папки включить отображение расширений для зарегистрированных типов файлов. Блокнотиком можно даже сразу сохранить файл с нужным расширением, для этого в поле имени надо написать имя файла вместе с расширением и обязательно в кавычках, вот так «wpc.bat». А то получится wpc.bat.txt, а оно нам надо? Файл должен находиться в C:\wpc .

Теперь надо разок запустить wpc.bat и фоновым рисунком рабочего стола назначить changed.bmp, который находится в C:\wpc\pic. А вот теперь при каждом запуске файла wpc.bat будет меняться картинка на рабочем столе. Только картинка, а не вариант ее отображения — было, например, «Растянуть», значит и останется «Растянуть». Зачем такие извращения, когда можно менять обои вручную, причем это совсем не сложно? А затем, что обычными средствами Windows запуск файла можно автоматизировать.

Если ткнуть это в автозагрузку, то катинка будет меняться при каждом входе в систему. Для этого надо сделать ярлык файла и положить его в C:\Documents and Settings\[имя пользователя]\Главное меню\Программы\Автозагрузка. Если этому ярлыку назначить быстрый вызов, обои можно будет менять сочетанием клавиш.

Если почудить с Назначенными заданиями, то есть творчески назначить запуск файла wpc.bat, обои будут меняться в время работы Винды.

Вообще-то, я это все писал не столько для практического использования, сколько для знакомства с возможностями консольных команд Windows. Но если кому понравилась работа этого примерчика, так я расскажу, как сделать работу покультурнее. Кто пробовал, те заметили, что при смене картинки мелькает противненькое окошечко, которое всю экибану на гуано сводит. Если уж пользоваться, так надо его убрать. Можно поколупать свойства ярлыка, поколупать батник, а можно воспользоваться небольшой хитростью по имени CHP.EXE (Create Hidden Process). Вот тут можно ее взять и про нее же почитать. В нашем случае, для скрытия работы BAT файла понадобится взять из скачанного архива файл chp.exe и кинуть в один каталог с батником, то есть в C:\wpc\pic\. Теперь, если меняем обои при входе в систему, надо в свойствах ярлыка обьект взять в кавычки, а перед этим дописать CHP cmd.exe /c. То есть, было C:\WpC\wp.bat, а получилось CHP cmd.exe /c «C:\WpC\wp.bat». Если меняем обои посредством Назначенных заданий, то такую же фигню надо провернуть со свойставами задания, там где «Выполнить».  



Как уже говорил, все это я затеял для ознакомления. А потому теперь, когда у желаюших это уже работает, надеюсь, есть желающие разобраться, как работает и за чей счет.

Первая строка батника — del /q C:\wpc\pic\*.bmp — удаляет все файлы с расширением BMP из каталога C:\wpc\pic\. Зачем? А дальше ясно будет. Пока ясно, что символ * значит «все».

Вторая строка — set /a rn=1+50*%random%/32768 - самая интересная. Батник ведь не настоящая программа, а просто набор команд для операционной системы. А вот операционка умеет делать порой неожиданные вещи. Этой строкой мы назначаем переменную с именем rn а значением ее делаем произвольное натуральное число от 1 до 50. У Винды есть встроенный генератор псевдослучайных чисел — переменная %RANDOM%, но в чистом виде она сейчас ни к чему, потому как генерит натуральные числа от 1 до 32767. Вот нафига сейчас-то столько? Но Винда может и дура, а арифметику знает. Загнав %RANDOM% в выражение 1+50*%random%/32768, мы будем на выходе получать числа в заданном пределе: от 1 до 50. Кстати, таким фокусом можно получать числа в любых пределах если, например, написать вместо 1+50     453+32767, так и получим числа между 453 и 32767. Теперь понятно, почему катинки нужно было назвать числами по порядку, начиная с единицы? И почему число 50 во второй строке надо было поменять на количество катинок? Дальше еще понятнее станет.

Третья строка — copy c:\wpc\%rn%.bmp c:\wpc\pic — копирует случайный файл с расширением BMP из каталога c:\wpc в каталог c:\wpc\pic. Ну, не совсем случайный, а с именем [значение переменной rn].bmp. Ага, как теперь понятно, чтобы подставить в строку значение переменной, надо написать ее имя в значках %% .

Четвертая строка — ren C:\wpc\pic\*.bmp changed.bmp — переименовывает все файлы с расширением BMP в changed.bmp. Вот тут понятно назначение самой первой строки. Как это, бляха-муха, Винда переназовет все файлы в одном каталоге одним именем? С другой стороны, как она угадает, какой именно файл образуется в результате работы третьей строки? А вот если любой, но при этом он заведомо единственный — все и сростется. Операционка — не человек. Что человеку заворот извилин — то ей просто. И наоборот. Вот теперь почти все. Как было сказано Винде, что обои ей — C:\wpc\pic\changed.bmp, так оно и теперь, да только картинка там уже другая. Только Винда ее перечитывает (и показывает обновленную) при загрузке параметров пользователя или при ручной замене. Надо Винду надоумить прямо сейчас это дело сделать.

Пятая строка — rundll32.exe user32.dll,UpdatePerUserSystemParameters — это команда перечитать пользовательские настройки. Все уже догадались, если картинка меняется только при входе в систему, без этой строки можно обойтись. Только с нею все равно аккуратнее — если случится так, что сначала исполнится батник, а потом перечитаются настройки, в файле будет новая картинка, а на экране — прошлая.

Вот и все, файл закочил работу. Никаких страшных циклов-фигиклов и такого всякого не использовалось, поэтому никаких команд завершения не надо.  



По этим мотивам можно сделать еще много чего. Например, менять звук запуска и/или завершения работы… Зная, что запуск файла — тоже команда системы, зная, что запуском REG файлов вносятся изменения в реестр, можно при замене картинок использовать этот финт. Только придется каждой картинке сопоставить REG файл. Кстати, тут [HKEY_CURRENT_USER\Control Panel\Desktop] есть параметры WallpaperStyle и TileWallpaper, которые определяют стиль отображения картинки. А тут — [HKEY_CURRENT_USER\Control Panel\Colors] — параметр Background — это цвет рабочего стола. А можно поинтересоваться прочими командами Windows — для начала достаточно ведь просто нажать Win+R, написать там CMD, ткнуть Enter, на окошке написать HELP и снова ткнуть Enter. Тогда и почуднее чудеса чудачить получится. Или для начала, хоть захочется.
Обсудить у себя 2
Комментарии (5)
«Или для начала, хоть захочется.»
вот-вот)))
чудес не хочется неожиданные смены чего-либо раздражаюют, но сама кухня… любопытно...
___
почувствовала себя импотентом смотрящим порнушку -вроде и незачем а все равно интересно)))
Желание — первый шаг.
«Чудеса» — это ведь необязательно мелькание картинок и что-то в этом роде. Просто так нагляднее, результат работы коротеньких строчек сразу видно. Я ведь сказал, что это не столько для использования, сколько для возможного начала знакомства. А привлеч первое внимание проще всего чем-то пусть и не очень нужным, зато ярким. И при этом совершенно работоспособным.
А вот про порнушку — не совсем так. Тут если интересно — то хоть какая — а польза. Вроде, необычное развлечение для мозга.
думаю, что для моего мозга любое шевеление мысли -польза))
Думаю, что это для любого мозга полезно.

А вот некоторые думают, что думать вредно для организма. Потому думают только это.
Чтобы комментировать надо зарегистрироваться или если вы уже регистрировались войти в свой аккаунт.