Je veux décompresser tous les fichiers dans un certain répertoire et conserver les noms de dossier lorsqu'ils sont décompressés.
Le script batch suivant ne fait pas tout à fait l'affaire. Il jette juste un tas de fichiers sans les placer dans un dossier et ne termine même pas.
Qu'est-ce qui ne va pas ici?
for /F %%I IN ('dir /b /s *.Zip') DO (
"C:\Program Files (x86)\7-Zip\7z.exe" x -y -o"%%~dpI" "%%I"
)
Essaye ça:
for /R "C:\root\folder" %%I in ("*.Zip") do (
"%ProgramFiles(x86)%\7-Zip\7z.exe" x -y -o"%%~dpI" "%%~fI"
)
ou (si vous souhaitez extraire les fichiers dans un dossier nommé d'après le fichier Zip):
for /R "C:\root\folder" %%I in ("*.Zip") do (
"%ProgramFiles(x86)%\7-Zip\7z.exe" x -y -o"%%~dpnI" "%%~fI"
)
La réponse d'Ansgar ci-dessus était à peu près parfaite pour moi, mais je voulais également supprimer les archives par la suite si l'extraction était réussie. J'ai trouvé this et l'ai incorporé dans ce qui précède pour donner:
for /R "Destination_Folder" %%I in ("*.Zip") do (
"%ProgramFiles%\7-Zip\7z.exe" x -y -aos -o"%%~dpI" "%%~fI"
"if errorlevel 1 goto :error"
del "%%~fI"
":error"
)
Essaye ça.
@echo off
for /F "delims=" %%I IN (' dir /b /s /a-d *.Zip ') DO (
"C:\Program Files (x86)\7-Zip\7z.exe" x -y -o"%%~dpI\%%~nI" "%%I"
)
pause