web-dev-qa-db-fra.com

Script batch Windows pour décompresser des fichiers dans un répertoire

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" 
)
8
Mark Kennedy

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" 
)
29
Ansgar Wiechers

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"
)
2
Billy Scott

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
1
foxidrive