Тема: VBScript: запуск самораспаковывающихся архивов MS-DOS
Cкрипт распаковывает комплект квартальных отчётов 1С:Предприятия v7.7. Скрипт просто запускает все EXE-файлы в указанной папке (с некоторыми нюансами) и может быть прописан в реестре как одна из команд контекстного меню проводника для папок. Скрипт получает единственный параметр - путь к папке, в которой находятся файлы самораспаковывающихся архивов. В папке должны обязательно находиться файлы "Ver.id" и "Loadlst.txt" (такая проверка производится для уменьшения вероятности того, что скрипт ошибочно запущен "не на той" папке). Алгоритм работы: скрипт по очереди запускает каждый найденный в папке EXE-файл, а затем удаляет его.
Нюансы: самораспаковывающийся архив MS-DOS "вываливает" своё содержимое не в каталог, в котором находится сам, а в текущий каталог. Если просто запустить такой архив методом "Run" объекта "WScript.Shell", содержимое архива будет распаковано в каталог, где расположен сам запускающий vb-скрипт. Чтобы обойти это, создаётся временный CMD-файл, в котором даётся команда "CD", устанавливающая нужный текущий каталог, а затем сама команда запуска архива MS-DOS.
Если самораспаковывающийся архив MS-DOS задаёт интерактивный вопрос о перезаписи существующих файлов, ему можно ответить автоматически с помощью команды перенаправления "< ФайлСОтветом.txt". В данном случае во временном файле ответа находится единственный символ "a", означающий "All", т.е., "перезаписывать все файлы".
Способы назначения команд контекстного меню проводника подробно описаны здесь:
http://www.script-coding.com/ContMenuExpl.html
Остаётся только добавить, что команда запуска скрипта в реестре может выглядеть, например, так:
wscript.exe "C:\Program Files\QRepUnpack.vbs" "%1"
В названии ветки всегда должен быть указан язык программирования или среда исполнения скрипта, если это возможно.