2016-06-27 2 views
1

Мне нужно итерации папки, и для каждого zip-файла мне нужно извлечь его с его именем. То есть, если его test.zip, то он должен извлечь тестовую папку. Точно так же он должен перебирать мою папку и ее дочерние папки и извлекать вещи. Я написал код ниже, но он не извлекается с именем zip. Пожалуйста посоветуй.Как извлечь все zip-файлы в папку с помощью winrar с тем же именем, что и zip?

cd %CD%\Setups 
for /r %%i in ("*.zip") do (
    echo "%%~fi" 
    "C:\Program Files (x86)\WinRAR\WinRAR.exe" a -afzip "%%~dpi" "%%~fi" 
    echo came after unzipping 
    del /S /Q "%%~fi" 
) 
exit \b 
+0

Как насчет '% ~ dpni' вместо'% ~ dpi'? – aschipfl

+0

% ~ dpni находит текущее местоположение, в которое он должен извлечь. Но ~% fi не дает мне имя папки, которое должно быть создано на имя zip. То есть, файл test.zip не извлекается в тестовую папку. – mayooran

+0

'%% ~ dpi' указывает на контейнер файла' .zip', '%% ~ ni' является базовым именем файла' .zip' (например, 'test'), поэтому' %% ~ dpni 'указывает на папку для извлечения; '%% ~ fi' указывает на файл' .zip' ... – aschipfl

ответ

1

Синтаксис для извлечения архивных файлов с Winrar.exe как то:

[путь \ WinRAR.exe] х [путь к файлу почтового индекса] [файлов для извлечения,. для всех файлов] [путь к папке для извлечения в]

@echo off 
set winrar=%ProgramFiles%\WinRAR\WinRAR.exe 
CD /D %CD%\Setups 
for /f "delims=" %%i in ('Dir /b *.zip') Do ("%Winrar%" x "%%~fi" "%%~dpni\") 
pause 

Редактировать на 28/06/2016 @ 13:35

Вы можете также добавить, если вы хотите этот переключатель -ibck для запуска WinRAR в фоновом режиме:

@echo off 
set winrar=%ProgramFiles%\WinRAR\WinRAR.exe 
CD /D %CD%\Setups 
for /r %%i in ("*.zip") Do ("%Winrar%" x -ibck "%%~fi" "%%~dpni\") 
pause 
+0

цикл for указывает, что «файл не найден», когда используется так, как вы указали. Поэтому я использовал «for/r %% i in (« * .zip »)», и он отлично работает. Могу ли я узнать, почему цикл for, который вы указали, не работает :( – mayooran

+0

@mayooran Я проверил свой сценарий, прежде чем я отправил вам сообщение, и он работает для меня как шарм :) просто я использовал 'set winrar =% ProgramFiles% \ WinRAR \ WinRAR.exe', который, возможно, отличается от вас 'set winrar =% ProgramFiles (x86)% \ WinRAR \ WinRAR.exe' – Hackoo

+0

Фактически это не из цикла for. Я удалил строку за строкой, чтобы найти строку, которая бросала этот файл, не найденную ошибку. Я еще раз проверю. Спасибо :) – mayooran

Смежные вопросы