DarkDeivel |
28-07-2016 17:47 2654962 |
Разархивирование rar архива с заменой и его удаление
Всем привет! Поискал по интернету ответ на вопрос, но так не совсем и понял как это реализовать.
Нужен bat файлы при включении которого он разархивировал архив с прописанным в нем названием, заменил файлы если уже существуют и удалил этот архив.
Вот как я начал
Код:
"%programfiles%\winrar\unrar.exe" x "test.rar" "С:\"
Он разархивирует архив, на диск C:\ а как указать чтобы конкретно в той же директории разархивировал где архив и лежит? Не задал диалогового окна с предложением заменить, а сразу заменял файл и после этого удалил этот архив? Всем спасибо!
|
Цитата:
Цитата DarkDeivel
а как указать чтобы конкретно в той же директории разархивировал где архив и лежит? »
|
А откуда в приведённом Вами коде можно узнать «где он лежит»?
Цитата:
Цитата DarkDeivel
заменил файлы если уже существуют и удалил этот архив. »
|
Читайте справку WinRAR по параметрам командной строки.
|
DarkDeivel |
29-07-2016 07:53 2655078 |
Разобрался.
Сделал вот так
Код:
"%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%"
Цитата:
Цитата DarkDeivel
Если я использую этот батник не сам, а через командную строку допустим, тогда папку откуда взять %programfiles% он указывает почему-то с разрядностью x86(Program Files (x86)) и из-за этого ошибка т.к. рар у меня стоит на просто в папке program files т.к. у меня разрядность х64. Если же я запускаю двойным кликом этот батник, тогда путь он сразу берет нужный и скрипт срабатывает. »
|
Ищите, отчего Ваша «командную строку допустим» является x86-приложением. Как Вы её запускаете?
Цитата:
Цитата DarkDeivel
Вопрос: Можно ли как-то строчки которые показываются в командном окне оформить? Там показывается путь к unrar и путь к файлу порой не очень красивый, какими то своими строчками прикрыть скрипты можно? »
|
Пытался осмыслить, но не смог.
|
DarkDeivel |
29-07-2016 18:11 2655351 |
Решил вопрос с разрядностью, а по поводу последнего вопроса, вот допустим использовал я пинг как таймер для выполнения скрипта, но то что написано для юзера не очень то красиво, можно ли заменить например текстом "Подготовка к выполнению..." вот что я имел ввиду, спасибо!

|
Цитата:
Цитата DarkDeivel
заменить например текстом "Подготовка к выполнению..." »
|
В чем проблема-то?
Код:
@echo off
echo Подготока к выполнению...
ping -n 3 127.0.0.1 >nul
pause
.
|
DarkDeivel |
30-07-2016 04:46 2655453 |
Проблема в том что я этого и не знал, спасибо! Это действительно прикрыло текстом как я хотел, правда вместо русского текста получилась какая-то кракозябра, может где-то кодировка не та стоит, надо покопаться, спасибо!
|
Цитата:
Цитата DarkDeivel
правда вместо русского текста получилась какая-то кракозябра, может где-то кодировка не та стоит, надо покопаться, »
|
Покопайтесь. Кодировка пакетного файла должна быть OEM/866.
|
DarkDeivel |
30-07-2016 08:36 2655470 |
Сделал, всем спасибо! Здорово всё работает! У меня идет распаковка архива и в окне показывает список файлов которые распаковываются, может быть это тоже можно скрыть и просто показывать процентами процесс распаковки?
А, да кстати, можно сделать чтобы батник распаковывал файлы на директорию выше, как это указать ему?
Пример:
Папка с программой называется folder
Батник хочу спрятать folder\data
Но мне нужно чтобы распаковывал он именно в folder
|
Цитата:
Цитата DarkDeivel
У меня идет распаковка архива и в окне показывает список файлов которые распаковываются, может быть это тоже можно скрыть и просто показывать процентами процесс распаковки? »
|
Это нормально. Если что не так пойдёт — сразу будет видно, на каком файле.
Цитата:
Цитата DarkDeivel
А, да кстати, можно сделать чтобы батник распаковывал файлы на директорию выше, как это указать ему? »
|
Можно. Покажите Ваш нынешний итоговый код.
|
DarkDeivel |
30-07-2016 10:44 2655480 |
Ну я понимаю что это нормально показывать список распакованных файлов, просто у меня батник распаковывает архив с обновлениями для игры и мне хотелось бы пользователя не грузить лишней инфой, а просто показывало "Обновляется...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
|
Цитата:
Цитата DarkDeivel
просто у меня батник распаковывает архив с обновлениями для игры и мне хотелось бы пользователя не грузить лишней инфой, а просто показывало "Обновляется...64%" в таком духе. »
|
WiX, InnoSetup, NSIS — Ваше всё. Или можете просто сделать обычный sfx-архив WinRAR.
Попробуйте так (не проверялось):
Код:
"%programfiles%\winrar\unrar.exe" x -y "%sSourceFile%" "..\"
|
DarkDeivel |
01-08-2016 15:08 2655937 |
Спасибо! Помогло!
|
Батнег исп-ю в Тотале, принимает на вход путь к папке.
Рекурсивная распаковка всех архивов 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
|
Время: 05:32.
© OSzone.net 2001-