Comment extraire plusieurs archives figurant dans des sous-répertoires dans un dossier, émettre les résultats dans les dossiers où sont les archives.
Premièrement, installez 7-zip .
Créez un fichier bat
dans la racine du répertoire contenant de nombreux sous-répertoires avec des archives à l'intérieur. Puis collez les éléments suivants:
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.Zip) DO (
"C:\Program Files\7-Zip\7z.exe" x "%%X"
)
popd
)
Lancez la batte, et tous les zips/zips seront extraits dans le dossier qu'ils figurent dans.
Comment cela fonctionne-t-il?
Pour/d/r %% f dans ("*") faire (
Pour boucle de boucle à travers tous les dossiers dans le répertoire actuel et placez le chemin dans une variable
%%F
.
pushd% cd% cd%
Placez le répertoire actuel que nous sommes dans la mémoire.
cd %% f
Définissez le dossier de la variable
%%F
comme le répertoire actuel.
FOR %%X in (*.rar *.Zip) DO (
Pour tous les fichiers
rar
etZip
dans le dossier actuel, faites:
"C:\Program Files\7-Zip\7z.exe" x "%%X"
Exécutez 7-Zip sur les fichiers. Des citations sont nécessaires autour de
%%X
Parce que certains noms de fichiers ont des espaces en eux.
popd
retour au répertoire précédent que nous avons précédemment stocké dans la mémoire.
J'espère que cela est utile à quelqu'un.
J'ai eu un problème d'exécution du script de Windows Vista. Quand j'ai couru le code, rien ne se passe. Je devais être administrateur pour pouvoir exécuter le script. Lorsque j'ai cliqué avec droit sur le fichier .bat et "exécuter en tant qu'administrateur", il n'a pas fonctionné car pour une raison quelconque dans le dossier System32 (si je me souviens bien). Pour résoudre ce problème, utilisez simplement la variable d'environnement Windows (expliquée ici: Variables d'environnement Windows )% ~ DP0 pour revenir au répertoire à partir du répertoire.
@echo on
cd %~dp0
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.rar *.Zip) DO (
"C:\Program Files\7-Zip\7z.exe" x %%X
)
popd
)
Assurez-vous que non * .rar ou * .zip Les fichiers sont au même niveau que le script. Ils devraient être un niveau.
J'espère que ce commentaire a aidé quelqu'un.
Les réponses ci-dessus fonctionnent toutefois si vous exécutez Windows 64-bit
Et 7-Zip 32-bit
, Le chemin correct est C:\Program Files (x86)\7-Zip
pour 7-zip. Vous trouverez ci-dessous le script qui a fonctionné pour moi.
@echo on
cd %~dp0
FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F
FOR %%X in (*.rar *.Zip) DO (
"C:\Program Files (x86)\7-Zip\7z.exe" x %%X
)
popd
)
find . -name "*.Zip" | while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done;
Démarre une recherche récursive sur le répertoire actuel, trouve tous les fichiers se terminant par .zip, puis des tuyaux dans une boucle. Pour chaque fichier, il utilise une commande UNZIP sur le fichier avec la sortie shunted sur le répertoire du fichier.