Sotto la cartella images\, ho le seguenti cartelle:
Usa\Italy\Japan\
eccetera..
Voglio uno script che crea una .zipper ciascuna di queste cartelle, quindi non ho usa.zip, italy.zip, japan.zip.
Come posso fare ciò?
Sotto la cartella images\, ho le seguenti cartelle:
Usa\Italy\Japan\eccetera..
Voglio uno script che crea una .zipper ciascuna di queste cartelle, quindi non ho usa.zip, italy.zip, japan.zip.
Come posso fare ciò?
Risposte:
Presumo che questo sia Windows, poiché stai usando le barre rovesciate.
Ottieni 7za.exe (la versione da 7-zip della riga di comando ) e inseriscilo nel tuo %PATH%.
Quindi eseguilo nella tua Images\directory:
for /f "tokens=* usebackq" %G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%~G.zip" "%~G"
O in uno script batch:
for /f "tokens=* usebackq" %%G in (`dir /b /a:d "%cd%"`) do 7za a -r -tzip "%%~G.zip" "%%~G"
Supponendo che tu sia su Linux potresti usare uno script Bash come questo:
#!/bin/bash
IFS=$'\n'
for f in $(find "$1" -mindepth 1 -maxdepth 1 -type d ); do
zip -r "$f" "$f"
done
Questo script prenderà il primo argomento come cartella, in questo caso immagini, e reciderà esattamente a un livello profondo per ottenere tutte le cartelle (Stati Uniti, Italia e Giappone) e comprimerle nello stesso posto.
Non eliminerà i vecchi file zip o le cartelle di origine. Zip è abbastanza intelligente da rilevare i file zip esistenti e aggiornarli quando si esegue di nuovo. Tuttavia, se si elimina un file nelle cartelle di origine, questo non verrà eliminato nei file zip. È possibile aggirare questo comportamento eliminando in anticipo i file esistenti.
Puoi usare Winrar per questo.
Seleziona tutte le cartelle, fai clic con il tasto destro e seleziona Add to archive. Ora seleziona l'opzione Put each file to separate archivesotto la scheda Files:

Fai clic su OK e il gioco è fatto. Se vuoi file .zip invece di .rar, seleziona ZIPnella Generalscheda sotto Archive format.
Questa risposta di MvG ha funzionato per me su Ubuntu:
Puoi usare questo loop in
bash:for i in */; do zip -r "${i%/}.zip" "$i"; done
iè il nome della variabile loop.*/indica ogni sottodirectory della directory corrente e includerà una barra finale in quei nomi. Assicurati dicdessere nel posto giusto prima di eseguire questo."$i"nomina semplicemente quella directory, inclusa la barra finale. Le virgolette assicurano che gli spazi bianchi nel nome della directory non causino problemi.${i%/}è come$ima con la barra finale rimossa, quindi puoi usarla per costruire il nome del file zip.Se vuoi vedere come funziona, includi
echoprima dizipe vedrai i comandi stampati anziché eseguiti.