|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Вывести сведения о зарегистрированных действиях для заданного расширения файла |
|
|
CMD/BAT - [решено] Вывести сведения о зарегистрированных действиях для заданного расширения файла
|
Новый участник Сообщения: 21 |
Вывести сведения о зарегистрированных действиях для заданного расширения файла и программах, выполняющих эти действия. Нельзя использовать assoc.
Примеры запуска: > accocx.cmd /? > accocx.cmd txt > accocx.cmd .txt open: C:\WINDOWS\system32\NOTEPAD.EXE %1 print: C:\WINDOWS\system32\NOTEPAD.EXE /p %1 printto: C:\WINDOWS\system32\notepad.exe /pt "%1" "%2" "%3" "%4" |
|
Отправлено: 19:40, 06-12-2015 |
Ветеран Сообщения: 1758
|
Цитата anoxina:
|
|
Отправлено: 20:02, 06-12-2015 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Такие условия задачи... По сути нужно сделать программу которая работает вместо команды assoc
|
Отправлено: 20:08, 06-12-2015 | #3 |
Ветеран Сообщения: 1758
|
|
Отправлено: 20:11, 06-12-2015 | #4 |
Забанен Сообщения: 793
|
@echo off setlocal set "i=0" for %%i in (%*) do set /a "i+=1" if "%i%" equ "1" if "%i%" equ "/?" goto:man if "%i%" neq "1" goto:man set "ext=%1" if "%ext:~0,1%" neq "." set "ext=.%ext%" for /f "skip=3 tokens=2,*" %%i in ( '2^>nul reg query "HKCR\%ext%" /ve' ) do ( for /f "tokens=4 delims=\" %%k in ( 'reg query "HKCR\%%j\shell"' ) do ( for /f "skip=3 tokens=2,*" %%l in ( 'reg query "HKCR\%%j\shell\%%k\command" /ve' ) do echo:%%k: %%m ) ) endlocal exit /b :man for %%i in ( "Usage: %~n0 <extension>" "" ".e.g.: C:\>%~n0 txt" ".e.g.: C:\>%~n0 .txt" "Output:" " open: %%SystemRoot%%\system32\NOTEPAD.EXE %%1" " print: %%SystemRoot%%\system32\NOTEPAD.EXE /p %%1" " printto: %%SystemRoot%%\system32\notepad.exe /pt "%%1" "%%2" "%%3" "%%4"" ) do echo:%%~i exit /b |
|
Отправлено: 09:56, 07-12-2015 | #5 |
Ветеран Сообщения: 1758
|
greg zakharov, Какая виндовс? У меня что-то ваш вариант не работает.
@echo off setlocal if "%1"=="/?" goto:help if "%1"=="" goto:help 1>nul chcp 65001 for /f "tokens=*" %%i in ('reg query hkcr\%1 /ve') do for %%j in (%%i) do set "assoc=%%j" :: ftype %assoc% for %%i in (open print printto) do ( for /f "tokens=2*" %%j in ('reg query hkcr\%assoc%\shell\%%i\command ^| findstr "REG_"') do ( echo %%i: %%k )) 1>nul chcp 866 goto:eof :help echo Usage: %~n0 [.ext^|/?] |
Отправлено: 11:07, 07-12-2015 | #6 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать Foreigner, Большое спасибо, не расскажите как это работает?
И еще проблема в том, например пишешь "> accocx.cmd txt" ничего не работает, а выдает ошибку, не знаете как это исправить? Буду очень благодарна Вам)) |
Отправлено: 12:48, 07-12-2015 | #7 |
Ветеран Сообщения: 1758
|
anoxina, Расширение принято обозначать с точкой. Исправьте верх батника (и кодировку 437, т.к. utf-8 не везде работает)
@echo off setlocal if "%1"=="/?" goto:help if "%1"=="" goto:help set "ext=.%1" 1>nul chcp 437 for /f "tokens=*" %%i in ('reg query hkcr\%ext:..=.% /ve')..... Цитата anoxina:
|
|
Отправлено: 13:20, 07-12-2015 | #8 |
Новый участник Сообщения: 21
|
Профиль | Отправить PM | Цитировать |
Отправлено: 19:18, 13-12-2015 | #9 |
Ветеран Сообщения: 1758
|
В первом цикле for берет из реестра с помощью штатной утилиты reg.exe значение HKCR\.расширение по умолчанию (ключ /ve), во втором for обрабатывает полученную строку (забирает из нее последний токен) и присваивает его переменной assoc. Например в консоли:
![]() После первого цикла выделена строка, которую обрабатываем во втором цикле, что бы получить значение ассоциации для .txt. Если оба цикла совместить, то получим нужную информацию: ![]() |
Отправлено: 19:48, 13-12-2015 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочие - [решено] Удаление файлов заданного расширения | Папуас | Программное обеспечение Windows | 11 | 25-02-2019 15:04 | |
Службы - Отсутствует исполняющее ядро для расширения имени файла vbs | raphael_green@vk | Microsoft Windows 7 | 3 | 05-12-2018 18:52 | |
CMD/BAT - Вывести сведения о зарегистрированных действиях для заданного расширения файла | kudrjavcev | Скриптовые языки администрирования Windows | 0 | 06-12-2015 19:15 | |
CMD/BAT - [решено] Изменение расширения файла без расширения | Алексей_Зайцев@vk | Скриптовые языки администрирования Windows | 16 | 10-10-2014 15:58 | |
Интерфейс - [решено] Как отобразить расширения зарегистрированных типов файлов? | Omu | Microsoft Windows 7 | 2 | 08-04-2011 22:55 |
|