Здравствуйте, Antonmerkulov.
bat-файл - это пережиток MsDOS, предлагавшей ограниченный набор команд из ком-процессора Command.com и несколько отдельных команд-файлов (FDISK.EXE, FORMAT.COM, SMARTDRV.EXE…). Основа современных cmd-файлов - командный процессор Cmd.exe, предлагающий намного более широкие возможности для программирования.
Благодаря Microsoft-политике совместимости программного обеспечения устаревшие bat-файлы могут работать и под новой ОС (ОперСистемой) WindowsXp, но во избежание двусмысленного толкования разумнее называть вещи своими именами.
Давайте напишем cmd-файл, связывающий файл-тип с расширением .xxx (из Вашего примера в мини-форуме) с какой-нибудь программой для открытия этого файла (например, текстовый редактор notepad.exe). Создадим текстовый файл 1.xxx и попыткой открыть его убедимся, что ОС "не знает" чем открывать этот тип. (Чтоб ОС "забыла" о нём, удалите раздел HKEY_CLASSES_ROOT\XxxFile ).
В первой строке нашего Assoc.cmd команда @Echo off запрещает отображать мешающие тексты командных слов в ниже-строках. Символ @ перед Echo скрывает отображение текста текущей, первой строки. Символ & позволяет употребить в одной строке несколько операторов, что делает текст большой программы удобо-читаемым (не растягивает на много экранов). После команды rem можно вписывать комментарии, поясняющие алгоритм.
Во второй строке программа объявляет Executing %0, что по-русски означает "Исполняется ВашПуть\Assoc.cmd". Это удобно при диагностике ошибок, связанных с текущим путём и не-нахождением в нём каких-либо файлов-помощников. Doskey `=Exit помогает творческим лентяям закрывать окно программы при стоп-отладке после паузы на заданном этапе. Вместо ввода команды Exit достаточно будет нажать клавишу Esc, независимую от текущей клав-раскладки, и нажать Enter.
Команда Echo. создаёт на экране пустую разделитель-строку перед очередным Вашим назначением.
Команда
Assoc .xxx=XxxFile привязывает расширение .xxx к типу XxxFile , а команда
Ftype XxxFile=Notepad.exe %%1задаёт программу-открывачку (Notepad.exe) для открытия типа XxxFile с открываемым файлом, заданным как параметр %%1 , который в процессе исполнения cmd-файла изменится на %1. После исполнения этой тройки команд создаётся раздел HKEY_CLASSES_ROOT\XxxFile\Shell\Open\Command с параметром @=Notepad.exe %1 , и станет возможным открывать файл 1.xxx даже без перезагрузки!
Но Вы не увидите этот раздел, если окно редактора реестра было открыто до исполнения Assoc.cmd (в Windows2000 этого "косяка" не было). В WindowsXp надо в окне редактора реестра нажать клавишу F5 для обновления экранного отображения с жёсткого диска.
Обратите внимание, что Notepad.exe задан без пути. Такое упрощение допустимо, поскольку его путь прописан в системной переменной Path (в моей ОС
PATH=D:\WINDOWS\system32;D:\WINDOWS;D:\WINDOWS\system32\WBEM;D:\Progra~1\WinRarпозволяет задавать даже кмд Rar.exe без пути). Если путь к Вашей "открывачке" не прописан в Path, то его надо задать полностью, а если путь содержит пробелы, то надо заключить его в кавычки. Пример синтакса: команда ftype Word.Document.8 (для .doc-файлов) возвращает:
Word.Document.8="D:\Program Files\Microsoft Office\Office10\WINWORD.EXE" /n /dde
Если Вам очень хочется назначить иконку или принт-дополнения к своему файл-типу, то команда Reg add может упаковать Ваши reg-строки из мини-форума как добавки в существующий Assoc.cmd.
Команда Echo Will assign icon (="предстоит назначение иконки") - комментирует очередное задание, поскольку ниже Reg-команда авто-отчитывается об успешности исполнения, не сообщая чем она занималась.
В команде Reg add Hkcr\XxxFile\DefaultIcon - имя создаваемого раздела, /ve - параметр @ , /d shimgvw.dll,2 - присваиваемое значение, /f =перезапись существующего значения без диалог-запроса.
Если Ваша иконка не прописана в системной dll или Path, то её также надо указать с полным путём, а при наличии пробелов заключить в кавычки.
Команда Pause задерживает отображение процесса исполнения на экране до нажатия любой клавиши.
Для ознакомления с синтаксом выше-перечисленных команд можно в окне командной строки (Пуск \Выполнить \Cmd) задать любую из них с ключём /?
reg add /?Хороший "Справочник по параметрам командной строки" имеется в Центре справки и поддежки (клав-сочетание Windows+F1).
Семейство reg-команд исходно не исполняется в ОС Windows2000, но можно скопировать файл reg.exe из WindowsXp \WINDOWS\system32\ , и Windows2000 "удочеряет" его в своей \Winnt\system32\
Готовый
Assoc.rar Вы можете скачать. Удачи Вам в автоматизации!