Пакетный файл для распаковки всех файлов в каталоге в целевой каталог с подпапками - PullRequest
0 голосов
/ 08 апреля 2020

Код ниже берет все zip-файлы в каталоге DirForZip и распаковывает его в один каталог UnzippedDir.

@echo off

for /R "C:\Users\ferit\Downloads\DirForZip" %%I in ("*.zip") do (
  "C:\Program Files\7-Zip\7z.exe" x -y -o"C:\Users\ferit\Downloads\UnzippedDir" "%%~fI"
)

Структура данных в каталоге DirForZip выглядит следующим образом:

DirForZip
    -test.zip
        -bbb.pptx
        -xsad.doc
        -dasda.docx
    -Folder ajsdhasd
        - 12334.zip
            -a.doc
            -5asd.xls
            -yxaawdqd.pptx
    -Folder skjdfhdshf
        - ahsdjasd.zip
            -asdasdb.txt
            -uiueewr.rar
            -asadsd.bat
            -hdsjfhsdf.7z
    -Folder sjdkfhsdf
        ....    
            ...

Однако я хочу, чтобы zip-файлы были разархивированы в соответствующем каталоге в UnzippedDir.

UnzippedDir
    -bbb.pptx
    -xsad.doc
    -dasda.docx
    -Folder ajsdhasd
            -a.doc
            -5asd.xls
            -yxaawdqd.pptx
    -Folder skjdfhdshf
            -asdasdb.txt
            -uiueewr.rar
            -asadsd.bat
            -hdsjfhsdf.7z
    -Folder sjdkfhsdf            
            ...

Как изменить мой код, показанный выше? И можно ли это сделать без использования 7zip?

Редактировать: С помощью приведенного ниже кода создаются соответствующие подкаталоги.

@echo off

for /R "C:\Users\ferit\Downloads\DirForZip" %%I in ("*.zip") do (
  "C:\Program Files\7-Zip\7z.exe" x -y -aou -o"C:\Users\ferit\Downloads\UnzippedDir\*" "%%~fI"
)

Только одно не правильно. Если подкаталога нет (например, см. Для test.zip выше), создается каталог test.zip, который не распаковывается непосредственно в каталог root. Как это исправить?

...