Sous le dossier images\
, j'ai les dossiers suivants:
Usa\
Italy\
Japan\
etc..
Je veux un script qui crée un .zip
pour chacun de ces dossiers, donc j'ai usa.zip
, italy.zip
, japan.zip
.
Comment puis je faire ça?
Sous le dossier images\
, j'ai les dossiers suivants:
Usa\
Italy\
Japan\
etc..
Je veux un script qui crée un .zip
pour chacun de ces dossiers, donc j'ai usa.zip
, italy.zip
, japan.zip
.
Comment puis je faire ça?
Réponses:
Je suppose que c'est Windows, car vous utilisez des barres obliques inverses.
Obtenez 7za.exe (la version en ligne de commande de 7-zip ) et placez-le dans votre %PATH%
.
Exécutez ensuite ceci dans votre Images\
répertoire:
for /f "tokens=* usebackq" %G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%~G.zip" "%~G"
Ou dans un script batch:
for /f "tokens=* usebackq" %%G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%%~G.zip" "%%~G"
En supposant que vous êtes sous Linux, vous pouvez utiliser un script Bash comme celui-ci:
#!/bin/bash
IFS=$'\n'
for f in $(find "$1" -mindepth 1 -maxdepth 1 -type d ); do
zip -r "$f" "$f"
done
Ce script prendra le premier argument comme dossier, dans ce cas des images, et recumérera exactement un niveau pour obtenir tous vos dossiers (États-Unis, Italie et Japon) et les compresser au même endroit.
Il ne supprimera pas les anciens fichiers zip ou les dossiers source. Zip est suffisamment intelligent pour détecter les fichiers zip existants et les mettre à jour lors d'une nouvelle exécution. Cependant, si vous supprimez un fichier dans les dossiers source, il ne sera pas supprimé dans les fichiers zip. Vous pouvez contourner ce problème en supprimant au préalable les fichiers existants.
Vous pouvez utiliser Winrar pour cela.
Sélectionnez tous vos dossiers, faites un clic droit et sélectionnez Add to archive
. Sélectionnez maintenant l'option Put each file to separate archive
sous l'onglet Files
:
Cliquez sur OK et vous avez terminé. Si vous voulez des fichiers .zip au lieu de .rar, sélectionnez simplement ZIP
dans l' General
onglet sous Archive format
.
Cette réponse de MvG a fonctionné pour moi sur Ubuntu:
Vous pouvez utiliser cette boucle dans
bash
:for i in */; do zip -r "${i%/}.zip" "$i"; done
i
est le nom de la variable de boucle.*/
signifie chaque sous-répertoire du répertoire courant et inclura une barre oblique de fin dans ces noms. Assurez-vous d'êtrecd
au bon endroit avant d'exécuter cela."$i"
nomme simplement ce répertoire, y compris la barre oblique de fin. Les guillemets garantissent que les espaces dans le nom du répertoire ne causeront pas de problèmes.${i%/}
est comme$i
mais avec la barre oblique de fin supprimée, vous pouvez donc l'utiliser pour construire le nom du fichier zip.Si vous voulez voir comment cela fonctionne, ajoutez un
echo
avant lezip
et vous verrez les commandes imprimées au lieu d'être exécutées.