Batch il comando "Estrai qui"


2

Vorrei raggruppare il comando "Estrai qui ..." su una cartella completa. Ogni tipo di archivio deve essere decompresso nella cartella corrente con il nome del file di archivio. Ho trovato alcuni script BATCH per solo * .zip, ma non mi interessa che tipo di archivio sia, purché il mio archiviatore possa aprirlo.

Qualcuno sa che tipo di archiviatore ha una tale funzionalità di batch? Non riesco a trovarlo in 7-zip o winrar.

In pseudo:

Given folder x
foreach archiveFile in x or descendant of x
unzip archiveFile.extension >> "folder of archiveFile/archiveFile"

Aggiornamento
Ho provato quanto segue solo per i file zip:

dir /s /b *.zip > allzips.txt
for /F %%x in (allzips.txt) do unzip %%x

Dove unzipè ancora una funzione sconosciuta.


Puoi incollare qui il tuo codice per .zip e io lo adatterò.
William Hilsum,

@William Ecco qua.
Marnix,

Risposte:


5

EDIT Dato: utilizzo di script batch.

Potresti voler usare uno strumento zip di terze parti (consiglio vivamente la versione da 7-ZIP della riga di comando chiamata 7z.exe) per farlo.

con 7z, la sintassi è la seguente:

7z <command> [<switch>...] <base_archive_name> [<arguments>...]

Per estrarre il comando sarebbe:

7z e file.zip -y

l'opzione -y assume la risposta "Sì" a tutte le domande che potrebbero sorgere durante l'estrazione, ad esempio richieste di sovrascrittura.

Quindi il tuo comando leggerà

CD "C:\Location\Of\ZipFiles"
FOR /F "USEBACKQ tokens=*" %%F IN (`DIR /b *.zip`) DO (7z e "%%F" -y)

Se si desidera inviarli in una posizione diversa, è possibile utilizzare l'opzione -o e specificare la directory:

7z e "%%F" -y -oC:\Some\Other\Folder\

MODIFICARE:

Per eseguire l'estrazione con percorsi completi e specificando solo tutti gli archivi ZIP, utilizzare questo:

7z x -tzip "C:\Location\of\zips\*"

O ancora più nutriente ... tutti i file ZIP su C: drive:

7z x -r -tzip "C:\*"

EDIT2:

Rendendolo compatibile con il tuo file di output, questo:

dir /s /b *.zip > allzips.txt
for /F %%x in (allzips.txt) do (7z x -tzip "%%x")

Vorrei mantenere la cartella e inviarli nella posizione stessa. Non dovrei usare xinvece di e? E: questo è ancora solo per i file zip. Non c'è un modo per dire semplicemente: tutti i tipi di file di archivio?
Marnix,

Quindi vuoi estrarre TUTTI I FILE ZIP da qualsiasi punto del disco e dire loro di estrarre dove si trovano in una cartella denominata come il file zip? E no in 7z l'opzione di estrazione è 'e'
Mechaflash il

Puoi usare 'x' invece di 'e' per preservare l'intero percorso sì. Errore mio.
Mechaflash,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.