У меня есть несколько заархивированных файлов (.rar, .zip), распределенных по нескольким подпапкам, но все в одной базовой папке (F:\1).

Мне было интересно, есть ли способ разархивировать каждый файл, сохраняя при этом его оригинальное имя (zip file.zip превратится в файл F:\1\zipped).

И если возможно, удалите оригинальный zip-файл, просто сохранив распакованную папку.

Есть ли способ сделать это с помощью командного файла, чтобы мне не приходилось делать каждую папку одновременно?

Спасибо, парни :)

1 ответ1

0

Ваш вопрос довольно неоднозначный. Архив обычно содержит более одного файла и может содержать вложенные папки. Если вы хотите создать folder с тем же именем, что и архив (без расширения), и хранить там все содержимое архива, это отправная точка.

:: Expand-Archive.cmd :::::::::::::::::::::::::::::::::::::::::::::::::::::
@Echo off&SetLocal EnableExtensions
Set Base=F:\1
if exist "%~1" Set "Base=%~f1"
Pushd %Base% ||(Echo Can't cd to base folder %base% &Pause&Exit)
For /f "delims=" %%A in ('Dir /B/S/A-D *.zip *.rar') Do Call :Expand "%%A"
PopD
Goto :Eof

:Expand
Set "_Folder=%~dp1"
PushD "%_Folder%"
Set "_Archive=%~nx1"
Set "_NewSubFolder=%~dpn1"
:: Your own code to expand the Archive goes here.
:: I don't know what tool (7zip Infozip etc.) you usually use.
::
:: with 7z somewhere in your path this might work,
:: remove Echo in the following 2 Lines.
Echo MkDir  "%_NewSubFolder%"
Echo 7z x -O"%_NewSubFolder%" "%_Archive%" && Del "%_Archive%"
PopD
Goto :Eof
:: Expand-Archive.cmd :::::::::::::::::::::::::::::::::::::::::::::::::::::

НТН

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .