2014-10-17 1 views
0

У меня есть каталог, который выглядит следующим образом:Нужна пакетный скрипт, который будет извлекать все файлы внутри архивированном файла внутри одной большой архивный файл

giantzippedfile.zip 
    0.zip 
    file_0 
    1.zip 
    file_1 
    ... 

И я хочу, чтобы запустить скрипт, который будет оставить только file_i годов.

Я надеялся использовать что-то вроде этого:

for /F %%I IN ('dir /b /s *.zip *.rar') DO (
    "C:\Program Files\7-Zip\7z.exe" x -o"%%~dpI" "%%I" 
) 

Но это только дает мне все i.zip вместо file_i, что я хочу. И сценарий кажется идемпотентным; запустить его во второй раз, похоже, ничего не делает.

ответ

0

(непроверенные) Попытка:

for /F %%I IN ('dir /b /s *.zip *.rar') DO (
    "C:\Program Files\7-Zip\7z.exe" x -o"%%~dpI" "%%I" 
    rem change to the directory, extract zips, delete them and change back 
    pushd "%%~dpI" 
    for /F %%z IN ('dir /b /s *.zip *.rar') DO (
     "C:\Program Files\7-Zip\7z.exe" x -o"." "%%z" 
     del "%%z" 
    ) 
    popd 
)