|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Разархивирование файлов отдельной папки архива, через обращение к реестру |
|
|
CMD/BAT - [решено] Разархивирование файлов отдельной папки архива, через обращение к реестру
|
Новый участник Сообщения: 17 |
Здравствуйте, уважаемые форумчане. Будьте добры, подскажите как можно осуществить следующую операцию:
1. В реестре найти путь к WinRAR по ветке: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinRAR.exe /Path и запустить его 2. Открыть архив Pack.rar (который лежит в одной директории с bat-файлом), и выбрать в нем все файлы и подпапки расположенные в данном архиве по пути Extras\Controller\ 3. Распаковать их в папку "%UserProfile%\Documents\Extras\Control_1" В итоге должно получится выражение, наподобие следующего: |
|
Отправлено: 12:30, 29-11-2018 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Browning Zed, примерно так (путь искать не надо):
@echo off setlocal enableextensions enabledelayedexpansion set sSourceFile=%~dp0Pack.rar set sDestFolder=%UserProfile%\Documents\Extras\Control_1 set sMask=Extras\Controller\*.* if exist "%sSourceFile%" ( start "" "winrar.exe" x -o+ "%sSourceFile%" "%sMask%" "%sDestFolder%\" ) else ( echo Can't find source file [%sSourceFile%]. exit /b 1 ) endlocal exit /b 0 |
Отправлено: 19:57, 29-11-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать Благодарю Вас, Iska, это гениально. А не могли бы в двух словах объяснить, каким образом этот код находит WinRAR? То есть, с простым путём, типа C:\Program Files\WinRAR\WinRAR.exe - понятно. А тут как работает?
|
Отправлено: 20:31, 29-11-2018 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать В двух — навряд ли. В большем же количестве — могу.
Никак не находит. В параметре App Paths хранятся имена исполняемых файлов и пути к ним, который может использовать функция ShellExecute(). Наша задача — лишь опосредованно вызвать её, что и делается посредством команды start. Примерно то же происходит, когда Вы последовательно делаете Win-R, winrar.exe, Enter. Просто в командной строке такой фокус не проделать — там просматривается только PATH (а вот в Far Manager'е можно — тамошний обработчик командной строки-запускатор задействует параметр App Paths [он, кстати, и себя туда добавляет]). Ссылки для чтения: В каких случаях при запуске программы не надо указывать полный путь к ней – Вадим Стеркин Application Registration | Microsoft Docs How the App Paths Registry Key Makes Windows Both Faster and Safer • Helge Klein |
Отправлено: 20:45, 29-11-2018 | #4 |
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать Iska, спасибо за развернутый ответ. Пойду курить мануалы.
А можно ли посредством этого кода разархивировать файлы находящиеся в архиве в директории определяемые через реестр? 1-я ветка реестра (системная папка «Документы») HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders / "Personal" где "Personal" и "path" - ключи реестра содержащие пути. |
|
Последний раз редактировалось Browning Zed, 29-11-2018 в 21:41. Отправлено: 20:52, 29-11-2018 | #5 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Из письма в PM:
Цитата Browning Zed:
|
|
Отправлено: 00:11, 30-11-2018 | #6 |
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Пробую так - ничего не получается: @echo off setlocal enableextensions enabledelayedexpansion set reg_path=HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\bioware\mass effect set reg_param=path for /f "tokens=1,2,*" %%a in ('reg query "%reg_path%" /v "%reg_param%"') do if "%%a"=="%reg_param%" set reg_value=%%c set sSourceFile=%~dp0Pack.rar set sMask=Extras\Controller\*.* if exist "%sSourceFile%" ( start "" "winrar.exe" x -o+ "%sSourceFile%" "%sMask%" "%reg_value%\" ) else ( echo Can't find source file [%sSourceFile%]. exit /b 1 ) endlocal exit /b 0 |
|
Последний раз редактировалось Browning Zed, 30-11-2018 в 17:55. Отправлено: 12:22, 30-11-2018 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Browning Zed, технически возможно. Возни много. Начиная с того, что надо сначала определить разрядность установленной ОС, и только в зависимости от этого лезть по тому или иному пути в реестр.
|
Отправлено: 18:09, 30-11-2018 | #8 |
Новый участник Сообщения: 17
|
Профиль | Отправить PM | Цитировать Iska, в моем случае, как мне кажется, реестр не будет иметь значения.
Собственно, для чего это нужно. Делаю модификацию для игры. Суть модификации - замена текстур со старых на новые (расположенных в директории приложения), а также замена файла конфигурации игры (находящемся в папке «Документы»), с измененными значениями, дабы эти текстуры в игре активировать. Никакие значения в реестре затрагиваться не будут. И делать инсталлятор для простых процедур распаковки и копипаста, как по мне, излишне. |
Отправлено: 18:36, 30-11-2018 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Browning Zed:
|
|
Отправлено: 18:54, 30-11-2018 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Разархивирование rar архива с заменой и его удаление | DarkDeivel | Скриптовые языки администрирования Windows | 13 | 07-08-2016 00:41 | |
CMD/BAT - [решено] Архивирование файлов через один из другой архватор запросом ИМЕНИ создаваемого архива | DJIOAN | Скриптовые языки администрирования Windows | 5 | 16-04-2015 11:17 | |
Интерфейс - [решено] Возможно ли отображение скрытых файлов в отдельной папке | А_н_д_р_ей | Microsoft Windows 7 | 5 | 18-06-2014 18:37 | |
2008 R2 - Создание отдельной папки для каждого пользователя локальной сети (под логином и паро) | sokol140387 | Windows Server 2008/2008 R2 | 9 | 31-08-2012 11:11 | |
Доступ к реестру через RegEdit? | Temp2000 | Лечение систем от вредоносных программ | 4 | 10-09-2007 17:30 |
|