Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Разархивирование rar архива с заменой и его удаление (http://forum.oszone.net/showthread.php?t=317261)

DarkDeivel 28-07-2016 17:47 2654962

Разархивирование rar архива с заменой и его удаление
 
Всем привет! Поискал по интернету ответ на вопрос, но так не совсем и понял как это реализовать.

Нужен bat файлы при включении которого он разархивировал архив с прописанным в нем названием, заменил файлы если уже существуют и удалил этот архив.

Вот как я начал
Код:

"%programfiles%\winrar\unrar.exe" x "test.rar" "С:\"
Он разархивирует архив, на диск C:\ а как указать чтобы конкретно в той же директории разархивировал где архив и лежит? Не задал диалогового окна с предложением заменить, а сразу заменял файл и после этого удалил этот архив? Всем спасибо!

Iska 28-07-2016 18:52 2654986

Цитата:

Цитата 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

Iska 29-07-2016 08:34 2655086

Цитата:

Цитата DarkDeivel
Сделал вот так »

Лучше так:
Код:

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

Решил вопрос с разрядностью, а по поводу последнего вопроса, вот допустим использовал я пинг как таймер для выполнения скрипта, но то что написано для юзера не очень то красиво, можно ли заменить например текстом "Подготовка к выполнению..." вот что я имел ввиду, спасибо!


alpap 29-07-2016 18:45 2655359

Цитата:

Цитата DarkDeivel
заменить например текстом "Подготовка к выполнению..." »

В чем проблема-то?
Код:

@echo off
echo Подготока к выполнению...
ping -n 3 127.0.0.1 >nul
pause

.

DarkDeivel 30-07-2016 04:46 2655453

Проблема в том что я этого и не знал, спасибо! Это действительно прикрыло текстом как я хотел, правда вместо русского текста получилась какая-то кракозябра, может где-то кодировка не та стоит, надо покопаться, спасибо!

Iska 30-07-2016 06:15 2655458

Цитата:

Цитата DarkDeivel
правда вместо русского текста получилась какая-то кракозябра, может где-то кодировка не та стоит, надо покопаться, »

Покопайтесь. Кодировка пакетного файла должна быть OEM/866.

DarkDeivel 30-07-2016 08:36 2655470

Сделал, всем спасибо! Здорово всё работает! У меня идет распаковка архива и в окне показывает список файлов которые распаковываются, может быть это тоже можно скрыть и просто показывать процентами процесс распаковки?

А, да кстати, можно сделать чтобы батник распаковывал файлы на директорию выше, как это указать ему?

Пример:
Папка с программой называется folder
Батник хочу спрятать folder\data
Но мне нужно чтобы распаковывал он именно в folder

Iska 30-07-2016 09:55 2655475

Цитата:

Цитата 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


Iska 31-07-2016 03:31 2655639

Цитата:

Цитата DarkDeivel
просто у меня батник распаковывает архив с обновлениями для игры и мне хотелось бы пользователя не грузить лишней инфой, а просто показывало "Обновляется...64%" в таком духе. »

WiX, InnoSetup, NSIS — Ваше всё. Или можете просто сделать обычный sfx-архив WinRAR.

Цитата:

Цитата DarkDeivel
Код: »

Попробуйте так (не проверялось):
Код:

"%programfiles%\winrar\unrar.exe" x -y "%sSourceFile%" "..\"

DarkDeivel 01-08-2016 15:08 2655937

Спасибо! Помогло!

x0r 07-08-2016 00:41 2657521

Батнег исп-ю в Тотале, принимает на вход путь к папке.
Рекурсивная распаковка всех архивов 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.

Время: 05:32.
© OSzone.net 2001-