Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Смена иконки ярлыка командой в .bat

Ответить
Настройки темы
CMD/BAT - [решено] Смена иконки ярлыка командой в .bat

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Алексей_Мокшанов@vk
Дата: 09-11-2012
Вопрос с предысторией (для пущего осознания ситуации)
изначально хотелось переключать "Устройство воспроизведения" в один клик, тут нашлось решение в виде утилиты DefSound
тк в DefSound реализована командная строка, народ смекнул и заваял
start.bat
Код: Выделить весь код
IF exist log.txt goto loop1
echo 0>log.txt
DefSound-x32.exe 0
goto exit
:loop1
del log.txt
DefSound-x32.exe 1
:exit
taskkill /im DefSound-x32.exe
START.JS
Код: Выделить весь код
var activex = new ActiveXObject("WScript.Shell");
activex.Run("start.bat", 0, true);
оба файлика требуется положить в папку к DefSound и запускать всю эту конструкцию с ярлыка созданного для START.JS
теперь у меня имеется проблема в индикации активного "Устройство воспроизведения", и мне думается что иконка ярлыка (созданного для START.JS) самый изящный способ
потому прошу откликнуться людей кто в состоянии дополнить (переделать) данную конструкцию для того что бы она не только переключала "Устройство воспроизведения" но и меняла иконку ярлыка
в системе имеется два устройства вывода звука, насколько я понимаю их в коде нумеруют как 0 и 1, чтоб далеко не отходить от устоявшегося обозначения будем считать что в папку со всеми файлами положены две иконки 0.ico и 1.ico, а на рабочем столе имеется ярлык START.lnk

не в тему: что выполняет (делает) данный код
читать дальше »
Код: Выделить весь код
@ECHO OFF
SETLOCAL EnableDelayedExpansion

FOR /F "tokens=*" %%I IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render"') DO (
	SET AudCount = 0
	FOR /F "tokens=3" %%J IN ('REG QUERY "%%I"^|FINDSTR /I /C:"devicestate"') DO (
		IF /I "%%J" EQU "0x1" (
			SET /a AudCount+=1
			ECHO %%I>>"%TMP%\renderlist.txt"
		)
	)
)

IF /I %AudCount% NEQ 0 (
	SET DevID=0
	SET DevName=
	FOR /F "tokens=*" %%I IN (%TMP%\renderlist.txt) DO (
		
		FOR /F "tokens=2*" %%J IN ('REG QUERY "%%I\Properties" /v "{b3f8fa53-0004-438e-9003-51a46e139bfc},6"') DO (
			SET DevName=%%K
		)
		
		FOR /F "tokens=2*" %%J IN ('REG QUERY "%%I\Properties" /v "{a45c254e-df1c-4efd-8020-67d146a850e0},2"') DO (
			SET DevName=!DevName! - %%K
		)
		
		IF /I "!DevName!" EQU "%~1" (
			CD /D "%~dp0"
			IF /I "%PROCESSOR_ARCHITECTURE%" EQU "x86" DefSound-x32.exe !DevID! %~2
			IF /I "%PROCESSOR_ARCHITECTURE%" EQU "amd64" DefSound-x64.exe !DevID! %~2
			DEL /F "%TMP%\renderlist.txt"
			GOTO :EOF
		)
		SET /a DevID+=1
	)
	DEL /F "%TMP%\renderlist.txt"
)
обнаружил это в DefSound.cmd, прилагался в архиве DefSound.zip тут, но про него не было ни слова, хочется знать его ценность и необходимость а также функционал

Отправлено: 13:53, 07-11-2012

 

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,
Спасибо большое всё работает идеально.
Хотел спросить как изменить скрипт так чтобы можно было задействовать 3 устройства, у меня это телевизор, наушники и колонки.
Телевизор стоит на 1 месте и если не получиться сделать с 3 устройствами, то как сделать так чтобы переключение было между 2 и 3 устройством, не нашёл где поставить.

Отправлено: 13:45, 04-05-2013 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Скрипт работает по принципу триггера, переключая два устройства. Как думаете организовать переключение между тремя устройствами?

Отправлено: 16:34, 04-05-2013 | #22


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,
Я решил для себя сделать другим методом, остановиться на bat и скриптах, без ярлыков и без vbs, и поставить выполнение скриптов на дополнительные кнопки клавиатуры, у меня Tt eSPORTS Challenger pro.
Но возникла другая проблема, после перезагрузки и попытки выполнить скрипт через кнопку вылетает ошибка http://take.ms/pneWIC, как с этим бороться пока что не придумал, но думаю дело уже в клавиатуре, приходится переназначать кнопки заново.

Отправлено: 11:29, 05-05-2013 | #23


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата tentacleattack:
Но возникла другая проблема, после перезагрузки и попытки выполнить скрипт через кнопку вылетает ошибка http://take.ms/pneWIC, »
Приведите код JScript из указанного файла.

Отправлено: 13:28, 05-05-2013 | #24


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,
Код: Выделить весь код
var activex = new ActiveXObject("WScript.Shell");
activex.Run("start1.bat", 0, true);
Собственно там же лежит start1.bat:
Код: Выделить весь код
DefSound-x32.exe 1
goto exit
и аналогичные start0.bat start2.bat с аналогичными скриптами.
После назначения на кнопку всё работает идеально, но после перезагрузки вылезает такая лажа, хотя в интерфейсе драйвера пути сохраняются.

Отправлено: 18:54, 05-05-2013 | #25


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Зачем Вам «start1.bat»?
Код: Выделить весь код
(new ActiveXObject("WScript.Shell")).Run("\"Путь\\DefSound-x32.exe\" 1", 0, true)
P.S. Не проверялось.

Отправлено: 19:57, 05-05-2013 | #26


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska,
Я не большой знаток всего этого что нашёл в теме из того и склепал, там было для 2 в 1 бат файле, я решил что так тоже будет работать.
Наверное по правильному нужно сделать по другому, но я не в курсе как

ps не работает http://take.ms/WJyG6B

Iska,
Я наверное правдо туповат, извините что отнял время, сдел всё через ярлыки, работает или нет не проверял, но в любом случае беспокоить не буду больше
Хотя через ярлыки не работает вообще через клавиатуру.... делема =(

Последний раз редактировалось tentacleattack, 05-05-2013 в 20:53.


Отправлено: 20:43, 05-05-2013 | #27


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата tentacleattack:
ps не работает http://take.ms/WJyG6B »
tentacleattack, давайте сделаем так: упакуйте Ваш скрипт JScript в архив и приложите к сообщению.

Отправлено: 23:35, 05-05-2013 | #28


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: zip DefSound.zip
(55.2 Kb, 29 просмотров)

Iska, Вот
Но мне всёравно не кажется что дело в скрипте, помоему просто дрова кривые, ибо подсветка так же не включается при перезагрузке, хотя должна.

Отправлено: 09:32, 06-05-2013 | #29


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата tentacleattack:
Iska, Вот »
Я просил по второму варианту:
Цитата tentacleattack:
ps не работает http://take.ms/WJyG6B »
Цитата tentacleattack:
ибо подсветка »
???

Отправлено: 18:59, 06-05-2013 | #30



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Смена иконки ярлыка командой в .bat

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интернет - [решено] проблема с командой arp -s Dosmod Microsoft Windows 7 1 07-10-2011 20:19
как воспользоваться данной командой? xrenomx AutoIt 8 17-10-2010 22:38
[решено] Создание ярлыка и смена иконки? Centrinar AutoIt 1 10-04-2010 23:39
Разное - [решено] Смена иконки у ярлыка на DOS приложение Delirium Microsoft Windows 7 9 18-01-2010 07:50
Проблемы с командой su m0rfeusl Общий по Linux 6 28-01-2004 15:17




 
Переход