Показать полную графическую версию : Разархивирование rar архива с заменой и его удаление
DarkDeivel
28-07-2016, 17:47
Всем привет! Поискал по интернету ответ на вопрос, но так не совсем и понял как это реализовать.
Нужен bat файлы при включении которого он разархивировал архив с прописанным в нем названием, заменил файлы если уже существуют и удалил этот архив.
Вот как я начал "%programfiles%\winrar\unrar.exe" x "test.rar" "С:\"
Он разархивирует архив, на диск C:\ а как указать чтобы конкретно в той же директории разархивировал где архив и лежит? Не задал диалогового окна с предложением заменить, а сразу заменял файл и после этого удалил этот архив? Всем спасибо!
а как указать чтобы конкретно в той же директории разархивировал где архив и лежит? »
А откуда в приведённом Вами коде можно узнать «где он лежит»?
заменил файлы если уже существуют и удалил этот архив. »
Читайте справку WinRAR по параметрам командной строки.
DarkDeivel
29-07-2016, 07:53
Разобрался.
Сделал вот так
"%programfiles%\winrar\unrar.exe" x -y upd.rar
del upd.rar
Но есть одна проблема и один вопрос.
Проблема: Если я использую этот батник не сам, а через командную строку допустим, тогда папку откуда взять %programfiles% он указывает почему-то с разрядностью x86(Program Files (x86)) и из-за этого ошибка т.к. рар у меня стоит на просто в папке program files т.к. у меня разрядность х64. Если же я запускаю двойным кликом этот батник, тогда путь он сразу берет нужный и скрипт срабатывает. Может быть можно сделать условие, проверку у пользователя систему на разрядность, сделать два пути и в зависимости от разрядности использовать нужный путь, я просто не знаю как еще решить этот вопрос.
Вопрос: Можно ли как-то строчки которые показываются в командном окне оформить? Там показывается путь к unrar и путь к файлу порой не очень красивый, какими то своими строчками прикрыть скрипты можно?
P.S. Win 7 x64
Сделал вот так »
Лучше так:
set sSourceFile=upd.rar
"%programfiles%\winrar\unrar.exe" x -y "%sSourceFile%" && del "%sSourceFile%"
Если я использую этот батник не сам, а через командную строку допустим, тогда папку откуда взять %programfiles% он указывает почему-то с разрядностью x86(Program Files (x86)) и из-за этого ошибка т.к. рар у меня стоит на просто в папке program files т.к. у меня разрядность х64. Если же я запускаю двойным кликом этот батник, тогда путь он сразу берет нужный и скрипт срабатывает. »
Ищите, отчего Ваша «командную строку допустим» является x86-приложением. Как Вы её запускаете?
Вопрос: Можно ли как-то строчки которые показываются в командном окне оформить? Там показывается путь к unrar и путь к файлу порой не очень красивый, какими то своими строчками прикрыть скрипты можно? »
Пытался осмыслить, но не смог.
DarkDeivel
29-07-2016, 18:11
Решил вопрос с разрядностью, а по поводу последнего вопроса, вот допустим использовал я пинг как таймер для выполнения скрипта, но то что написано для юзера не очень то красиво, можно ли заменить например текстом "Подготовка к выполнению..." вот что я имел ввиду, спасибо!
http://s8.hostingkartinok.com/uploads/images/2016/07/4474aa086f80d0fa1a806bdf903eda0c.jpg
заменить например текстом "Подготовка к выполнению..." »
В чем проблема-то?
@echo off
echo Подготока к выполнению...
ping -n 3 127.0.0.1 >nul
pause
.
DarkDeivel
30-07-2016, 04:46
Проблема в том что я этого и не знал, спасибо! Это действительно прикрыло текстом как я хотел, правда вместо русского текста получилась какая-то кракозябра, может где-то кодировка не та стоит, надо покопаться, спасибо!
правда вместо русского текста получилась какая-то кракозябра, может где-то кодировка не та стоит, надо покопаться, »
Покопайтесь. Кодировка пакетного файла должна быть OEM/866.
DarkDeivel
30-07-2016, 08:36
Сделал, всем спасибо! Здорово всё работает! У меня идет распаковка архива и в окне показывает список файлов которые распаковываются, может быть это тоже можно скрыть и просто показывать процентами процесс распаковки?
А, да кстати, можно сделать чтобы батник распаковывал файлы на директорию выше, как это указать ему?
Пример:
Папка с программой называется folder
Батник хочу спрятать folder\data
Но мне нужно чтобы распаковывал он именно в folder
У меня идет распаковка архива и в окне показывает список файлов которые распаковываются, может быть это тоже можно скрыть и просто показывать процентами процесс распаковки? »
Это нормально. Если что не так пойдёт — сразу будет видно, на каком файле.
А, да кстати, можно сделать чтобы батник распаковывал файлы на директорию выше, как это указать ему? »
Можно. Покажите Ваш нынешний итоговый код.
DarkDeivel
30-07-2016, 10:44
Ну я понимаю что это нормально показывать список распакованных файлов, просто у меня батник распаковывает архив с обновлениями для игры и мне хотелось бы пользователя не грузить лишней инфой, а просто показывало "Обновляется...64%" в таком духе.
@echo off
@TITLE Updater
set sSourceFile=upd.rar
@echo off
Color 0B
echo -Подготовка к обновлению...
ping -n 3 127.0.0.1 >nul
@echo off
echo -Обновление
"%programfiles%\winrar\unrar.exe" x -y "%sSourceFile%"
@echo off
echo -Удаление временных файлов
del "%sSourceFile%"
ping -n 2 127.0.0.1 >nul
@echo off
echo -Завершение обновления
start Launcher.exe
просто у меня батник распаковывает архив с обновлениями для игры и мне хотелось бы пользователя не грузить лишней инфой, а просто показывало "Обновляется...64%" в таком духе. »
WiX, InnoSetup, NSIS — Ваше всё. Или можете просто сделать обычный sfx-архив WinRAR.
Код: »
Попробуйте так (не проверялось):
"%programfiles%\winrar\unrar.exe" x -y "%sSourceFile%" "..\"
DarkDeivel
01-08-2016, 15:08
Спасибо! Помогло!
Батнег исп-ю в Тотале, принимает на вход путь к папке.
Рекурсивная распаковка всех архивов RAR из подпапок и удаление удачно распакованных.
сам скрипт лежит в папке %COMMANDER_PATH%\Scripts а архиватор rar.exe лежит в %COMMANDER_PATH%\Plugins\arc\rar.exe
потому такой путь %~dp0..\Plugins\arc\rar.exe ".." - значит "на каталог выше"(см. справку смд.экзе).
@echo off
chcp 1251
rem recursive UNpack RAR archives in folder and then delete archives
rem check parameters
if "%~1"=="" goto :noparam
chdir /d "%~1"
if %errorlevel% neq 0 goto :noparam
if exist unperror.log del unperror.log
rem main loop
echo ======= Работаю ...
@for /f "delims=%%" %%i in ('dir /S /b *.rar') do (
%~dp0..\Plugins\arc\rar.exe e -u "%%~fi" "%%~dpi" && del "%%~fi"
) 2>>unperror.log
echo ^=============================================================
if exist unperror.log start "" notepad.exe unperror.log
echo ^=============================================================
pause
exit
exit
:noparam
echo.
echo =============== %~n0. Command line error: "%*"
echo.
pause
exit /B 1
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.