2016-11-04 2 views
1

Ich habe 50k gezippte Dateien in einem Ordner. Ich muss all diese Inhalte entpacken, alle in eine einzige Datei verketten und alle gezippten Dateien löschen. Ich versuche, Inhalt zu entpacken, ohne eine neue entpackte Datei zu benötigen, die ich am Ende löschen muss. Das Folgende ist eine äquivalente Operation, die ich momentan unter Linux ausführe.Entpacken Sie Inhalt und verketten Sie den Inhalt in eine Datei

for f in *.zip; 
do 
unzip -p "${f}" >> concatenatedfile.txt; 
rm $f; 
done; 

Aber ich muss dies in Windows über Batch tun und ich bin auf die Verwendung von 7Z zum Entpacken beschränkt.

Zur Zeit verwende ich folgenden Code, wo ich den Text-Dateinamen für Testzwecke fest kodiere und es funktioniert. Ich versuche, diesen Dateinamen dynamisch zu erhalten und, wenn möglich, diese Datei überhaupt nicht zu erstellen und nur Zip-Datei-Daten zu erhalten und die Datei concatenatedfile.txt hinzuzufügen.

for %%z in (*.zip) do (
    7z e "%%~fz" > NUL: 
    type hardcoded_filename.txt >> concatenatedfile.txt 
    del hardcoded_filename.txt 
    del %%z 
) 
+0

Sie haben eine zweite for-Schleife innerhalb der ersten zu tun, um die extrahierten Dateinamen aufzunehmen. –

+0

@Noodles Eine zweite Schleife, obwohl es in jeder Schleife nur eine einzige Datei gibt? Kann ich bitte ein Beispiel bekommen? – kar

+0

Also sagen Sie, dass die Textdatei in der Zip-Datei nicht den gleichen Namen hat? – Squashman

Antwort

0
@echo off 
For %%A in (*.vbs) Do (
    Copy "%%A" "%%A.bak 
    For %%B in (*.bak) Do (
     Echo %%B 
     Del "%%B" 
    ) 
) 
+4

Was hat der Code in dieser Antwort mit dem Entpacken zu tun? – Pang

+0

Hm wusste nicht, jemanden freundlich zu fragen, das Wort zu verwenden, entspricht bitte dem Betteln. Und antworten @Pang mit meinem Zitat, verwirrt viel? – kar

Verwandte Themen