O script:
for /F %%I IN ('dir /b /s *.zip *.rar') DO (
"C:\Program Files-Zipz.exe" x -o"%%~dpI" "%%I"
)
Explicação:
for /F %%I IN ('dir /b /s *.zip *.rar') DO (
Isso realiza um loop para cada arquivo retornado pelo comando dir /b /s *.zip *.rar . O /s informa dir para recursar em subdiretórios e /b imprime no formato simples.
O nome do arquivo é armazenado na variável %%I para uso posterior. Se você estivesse digitando no prompt, usaria %I .
"C:\Program Files-Zipz.exe" x -o"%%~dpI" "%%I"
Isso realiza a extração. O argumento -o"%%~dpI" extrai o arquivo no mesmo diretório em que o arquivo reside. Outras opções:
-
-o"%%~dpI"- Extrai para o diretório em que o arquivo reside. -
-o"%%~dpnI"- Cria um novo diretório na hierarquia com o nome do arquivo e extrai lá (isto é,AFolder\archive.zipextrai paraAFolder\archive\). -
-o"%%~nI"- Cria um novo diretório no diretório atual nomeado após o archive e extrai lá (ou seja,AFolder\archive.zipextrai para.\archive\). -
Omita o argumento
-o- Extrai para o diretório atual.
Exemplo:
C:\Temp>tree /F
Folder PATH listing
Volume serial number is 08A4-22E0
C:.
│ batch.bat
│
├───AFolder
│ a.zip
│
├───BFolder
│ b.zip
│
└───CFolder
c.zip
C:\Temp>batch.bat > nul
C:\Temp>tree /F
Folder PATH listing
Volume serial number is 08A4-22E0
C:.
│ batch.bat
│
├───AFolder
│ a.zip
│ a.zip.txt
│
├───BFolder
│ b.zip
│ b.zip.txt
│
└───CFolder
c.zip
c.zip.txt