Comment extraire plusieurs archives contenues dans des sous-répertoires d'un dossier, renvoyer les résultats dans les dossiers où se trouvent les archives.
Comment extraire plusieurs archives contenues dans des sous-répertoires d'un dossier, renvoyer les résultats dans les dossiers où se trouvent les archives.
Réponses:
Tout d'abord, installez 7-zip .
Créez un bat
fichier à la racine du répertoire contenant de nombreux sous-répertoires avec des archives à l'intérieur. Collez ensuite les éléments suivants dans:
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 chauve-souris, et tous les rar / zips seront extraits dans le dossier dans lequel ils sont contenus.
Comment cela marche-t-il?
POUR / D / r %% F dans ("*") DO (
Pour que boucle passe en boucle dans tous les dossiers du répertoire en cours et place le chemin dans une variable
%%F
.
pushd% CD%
Mettez le répertoire actuel dans lequel nous sommes en mémoire.
cd %% F
Définissez le dossier de variable
%%F
comme répertoire actuel.
FOR %%X in (*.rar *.zip) DO (
Pour tous les fichiers
rar
etzip
dans le dossier actuel, procédez comme suit:
"C:\Program Files\7-zip\7z.exe" x "%%X"
Exécutez 7-zip sur les fichiers. Des citations sont nécessaires
%%X
car certains noms de fichiers contiennent des espaces.
popd
Revenez au répertoire précédent que nous avions précédemment stocké dans la mémoire.
J'espère que cela sera utile à quelqu'un.
J'ai rencontré un problème lors de l'exécution du script à partir de Windows Vista. Lorsque j'ai exécuté le code, rien ne s'est produit. J'avais besoin d'être administrateur pour pouvoir exécuter le script. Lorsque j'ai cliqué avec le bouton droit sur le fichier .bat et "exécuté en tant qu'administrateur", cela n'a pas fonctionné car il a commencé 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 duquel le script a été exécuté.
@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 qu'aucun fichier * .rar ou * .zip n'est au même niveau que le script. Ils devraient être d'un niveau plus bas.
J'espère que ce commentaire a aidé quelqu'un.
find . -name "*.zip" | while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done;
Démarre une recherche récursive dans le répertoire courant, trouve tous les fichiers se terminant par .zip, puis les redirige vers une boucle. Pour chaque fichier qu'il trouve, il exécute une commande de décompression sur le fichier avec la sortie shuntée dans le répertoire du fichier.
Les réponses ci-dessus fonctionnent cependant si vous exécutez Windows 64-bit
et que 7-Zip 32-bit
le chemin correct est C:\Program Files (x86)\7-Zip
pour 7-Zip. Voici 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
)