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.zip
extrai 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.zip
extrai 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