Dateien in einem Ordner nacheinander einzeln zippen, wie definiere ich die zu zippende Datei? (Batch, DOS)
Was ich nicht kann, ist die Datei zu bestimmen, die gezippt werden soll. Der Rest ist klar (bisher zumindest).
Hallo,
habe mir mit Hilfe der Suche folgendes Skript (unter DOS) zusmmengestellt; einzelne Teile funktionieren auch wunderbar.
Ich möchte gerne alle Dateien eines bestimmten Ordners zippen. Aber einzeln.
Soweit bin ich schon:
Ich hoffe, mit dieser Struktur meine Frage verständlich gemacht zu haben, ohne allzuviel Worte zu verlieren.
Ich komme mit Zeile 13 und Zeile 34 nicht weiter.
Würde mich freuen, wenn mir da jemand weiterhelfen kann.
(Vielleicht gibt es ja auch eine viel kürzere Version, denn ich möchte ja eh alle Dateien des Ordners zippen.)
Gruß,
der Tigre
Hallo,
habe mir mit Hilfe der Suche folgendes Skript (unter DOS) zusmmengestellt; einzelne Teile funktionieren auch wunderbar.
Ich möchte gerne alle Dateien eines bestimmten Ordners zippen. Aber einzeln.
Soweit bin ich schon:
:: 1.0 ins Verzeichnis mit den ungezippten Dateien wechseln
F:
cd F:"\testdaten\ungezippte Dateien"
:: 1.1 Erklärung zu 1.0
:: alle Dateien in diesem Ordner sind nach folgendem Schema benannt
:: 2009-01-12~text.bkf, also JJJJ-MM-TT~text.bkf
:: "~text" ist immer gleich, also immer "~text"
:: Die Datei beginnt in 2009 z.B. mit 2009-10-21~text.bkf und wird hochgezählt bis 2010-01-20~text.bkf
:: Grundsätzlich fortlaufend, aber teilweise fehlt auch mal ein Tag, auf 2009-11-22~text.bkf kommt dann 2009-11-25~text.bkf
: ---------- 2.0 Brauche Hilfe ---------------
:: 2.0
:: "Ermittle die erste Datei, ordne die Datei einer Variablen zu, damit diese Datei
:: im nächsten Schritt mit 7-Zip gezippt werden kann ...
: Funktioniert.
:: 3.0 Zippe die Datei und speichere die gezippte Datei
:: (erst Zielordner\Name der gezippten Datei.zip, dann Quellordner)
Set ZIPFILE=%in2.0definierteDatei%.zip ' ist nur ein Beispielname
7z.exe a -r -tzip "J:\testgezippt\%ZIPLFILE%" "F:\testdaten\ungezippte Dateien\"in2.0definierteDatei"
: Funktioniert.
:: 4.0 Verschiebe die %in2.0definierteDatei" (also die ungezippte datei)
MOVE /Y "F:\testdaten\ungezippte Dateien\%in2.0definierteDatei% J:\testgezippt\rohdaten
: ---------- 5.0 Brauche Hilfe ---------------
:: 5.0 Fange bei 2.0 wieder an ...
:: Funktioniert.
:: 6.0 Wenn fertig, dann erstelle Fertig.txt in und versende diese per E-Mail
:: die Definiton der folgenden Variablen möchte ich hier nicht nennen :-)
blat.exe %pfad_log% %smtpserver% %user% %server% %paswo% %toMail% %frMail% %subj% %X%
Ich hoffe, mit dieser Struktur meine Frage verständlich gemacht zu haben, ohne allzuviel Worte zu verlieren.
Ich komme mit Zeile 13 und Zeile 34 nicht weiter.
Würde mich freuen, wenn mir da jemand weiterhelfen kann.
(Vielleicht gibt es ja auch eine viel kürzere Version, denn ich möchte ja eh alle Dateien des Ordners zippen.)
Gruß,
der Tigre
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 134799
Url: https://administrator.de/contentid/134799
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
16 Kommentare
Neuester Kommentar
Du brauchst eine Schleife. So ungefähr:
FOR %%i IN ("F:\testdaten\ungezippte Dateien\*.*) DO 7z.exe a -r -tzip "J:\testgezippt\%ZIPFILE%"
... bzw
Noch als Anmerkung zum Schritt 1.0: Wenn ohnehin mit absoluten Pfaden gearbeitet wird, ist eigentlich das Wechseln in das Verzeichnis "F:\testdaten\ungezippte Dateien" unnötig ...
Grüße
bastla
[Edit] Verschieben vom Errorlevel des ZIP-Vorganges abhängig gemacht [/Edit]
FOR %%i IN ("F:\testdaten\ungezippte Dateien\*.*) DO (
7z.exe a -tzip "J:\testgezippt\%%~ni.zip" "%%i" && MOVE "%%i" "J:\testgezippt\rohdaten"
)
Grüße
bastla
[Edit] Verschieben vom Errorlevel des ZIP-Vorganges abhängig gemacht [/Edit]
Hallo Tigre-Rojo!
Die erste Zeile ließe sich übrigens bei Bedarf (wenn auch andere, nicht zu zippende Dateien im Ordner "F:\testdaten\ungezippte Dateien" enthalten wären) genauer mit
formulieren.
Grüße
bastla
- %%1 ist die erste Datei im Ordner?
Nein - nicht die Ziffer "1", sondern der Buchstabe "i"; außerdem wird jede Datei der Reihe nach als "%%i" angesprochen (in Basic wäre zB dieses "%%i" die Laufvariable einer "For Each
"-Schleife) ...- was ist denn %%~ni.zip ? oder soll das %%i heißen?
Da "%%i" den vollen Pfad enthält, Du aber nur den Dateinamen (ohne Extension) als Namen der ZIP-Datei benötigst, wird dieser mit "%%~ni" extrahiert (siehe dazu: "for /?
" gegen Ende) - aus "F:\testdaten\ungezippte Dateien\2009-01-12~text.bkf
" wird dadurch "2009-01-12~text
"; daran wird dann noch ".zip" angefügt.Die erste Zeile ließe sich übrigens bei Bedarf (wenn auch andere, nicht zu zippende Dateien im Ordner "F:\testdaten\ungezippte Dateien" enthalten wären) genauer mit
FOR %%i IN ("F:\testdaten\ungezippte Dateien\20*-text.bkf) DO (
Grüße
bastla
Hallo Tigre!
Zum Testen empfiehlt es sich grundsätzlich, den Batch von der Kommandozeile aus zu starten; zumindest kannst Du aber als letzte Zeile
verwenden, um die Ausgaben lesen zu können.
"F:\gezippt" und "F:\rohdaten" sollten übrigens bereits vorweg erstellt worden sein.
Grüße
bastla
Zum Testen empfiehlt es sich grundsätzlich, den Batch von der Kommandozeile aus zu starten; zumindest kannst Du aber als letzte Zeile
pause
Was übersehe ich?
Fehlt Das schließende Anführungszeichen nach *.* in der ersten Zeile auch in Deinem Batch oder nur in der geposteten Version?Grüße
bastla
Hallo miteinander
Mich beschäftigt ein ähnliches Problem wie den Ersteller dieses Threads.
Folgende Ausgangssituation:
Ich habe einen Ordner mit verschiedenen Dateien. Nun möchte ich mit Hilfe von 7-zip jede .txt Datei (es sind auch andere Dateitypen vorhanden) einzeln zippen.
Mit folgendem Befehl klappt das leider nicht:
FOR %%i IN ("C:\Test\*.txt") DO (
C:\Programme\7-Zip\7z.exe a -tzip "C:\\ZIP\%%~ni.zip"
)
PAUSE
In der Hilfe von 7-zip habe ich gelesen, dass man mit @liste.txt eine Liste angeben kann, bei welcher man die Dateiendungen eintragen kann. Hier noch der Auszug aus der Hilfedatei:
You can supply one or more filenames or wildcards for special list files (files containing lists of files). The filenames in such list file must be separated by new line symbol(s).
For list files, 7-Zip uses UTF-8 encoding by default. You can change encoding using -scs switch.
Multiple list files are supported.
For example, if the file "listfile.txt" contains the following:
My programs\*.cpp
Src\*.cpp
then the command
7z a -tzip archive.zip @listfile.txt
adds to the archive "archive.zip" all "*.cpp" files from directories "My programs" and "Src".
Ich habe das so ausprobiert, aber 7-zip zippt mir jetzt ALLE .txt Dateien in verschiedene .zip Dateien. Ich möchte aber die Dateien einzeln zippen.
Wie muss ich hier vorgehen?
Vielen Dank für eure Antwort.
Mich beschäftigt ein ähnliches Problem wie den Ersteller dieses Threads.
Folgende Ausgangssituation:
Ich habe einen Ordner mit verschiedenen Dateien. Nun möchte ich mit Hilfe von 7-zip jede .txt Datei (es sind auch andere Dateitypen vorhanden) einzeln zippen.
Mit folgendem Befehl klappt das leider nicht:
FOR %%i IN ("C:\Test\*.txt") DO (
C:\Programme\7-Zip\7z.exe a -tzip "C:\\ZIP\%%~ni.zip"
)
PAUSE
In der Hilfe von 7-zip habe ich gelesen, dass man mit @liste.txt eine Liste angeben kann, bei welcher man die Dateiendungen eintragen kann. Hier noch der Auszug aus der Hilfedatei:
You can supply one or more filenames or wildcards for special list files (files containing lists of files). The filenames in such list file must be separated by new line symbol(s).
For list files, 7-Zip uses UTF-8 encoding by default. You can change encoding using -scs switch.
Multiple list files are supported.
For example, if the file "listfile.txt" contains the following:
My programs\*.cpp
Src\*.cpp
then the command
7z a -tzip archive.zip @listfile.txt
adds to the archive "archive.zip" all "*.cpp" files from directories "My programs" and "Src".
Ich habe das so ausprobiert, aber 7-zip zippt mir jetzt ALLE .txt Dateien in verschiedene .zip Dateien. Ich möchte aber die Dateien einzeln zippen.
Wie muss ich hier vorgehen?
Vielen Dank für eure Antwort.
Moin KSDKSD,
Kannst du das bitte etwas umformulieren?
Ebenso dieses:
Bitte mal ein Beispiel mit "Diese Dateien liegen vor--> Zipfiles sollen sein..."
Ja, ich weiss, die Beschreibung des wirtschaftspolitischen Konzepts des Tigerenten-Clubs ist auch nur "Die Folgen der Krise müssen überwunden werden.".
Aber hier im Forum gilt "Wir essen zeitig." -> Also etwas konkreter bitte.
Grüße
Biber
Zitat von @KSDKSD:
Mit folgendem Befehl klappt das leider nicht:
FOR %%i IN ("C:\Test\*.txt") DO (
C:\Programme\7-Zip\7z.exe a -tzip "C:\\ZIP\%%~ni.zip"
)
PAUSE
"Mit folgendem Befehl klappt das leider nicht:" ist keine richtig brauchbare Fehlerbeschreibung.Mit folgendem Befehl klappt das leider nicht:
FOR %%i IN ("C:\Test\*.txt") DO (
C:\Programme\7-Zip\7z.exe a -tzip "C:\\ZIP\%%~ni.zip"
)
PAUSE
Kannst du das bitte etwas umformulieren?
Ebenso dieses:
Ich habe das so ausprobiert, aber 7-zip zippt mir jetzt ALLE .txt Dateien in verschiedene .zip Dateien.
Ich möchte aber die Dateien einzeln zippen.
Ich möchte aber die Dateien einzeln zippen.
Bitte mal ein Beispiel mit "Diese Dateien liegen vor--> Zipfiles sollen sein..."
Ja, ich weiss, die Beschreibung des wirtschaftspolitischen Konzepts des Tigerenten-Clubs ist auch nur "Die Folgen der Krise müssen überwunden werden.".
Aber hier im Forum gilt "Wir essen zeitig." -> Also etwas konkreter bitte.
Grüße
Biber
Vielen Dank für deine Antwort.
Weiter unten im Text habe ich meine Antwort konkretisiert:
"Ich habe das so ausprobiert, aber 7-zip zippt mir jetzt ALLE .txt Dateien in verschiedene .zip Dateien. Ich möchte aber die Dateien einzeln zippen."
Danke für deine Antwort.
Mit dem obigen Befehl zippt 7-zip einfach ALLE Dateien in verschiedene zip-Files!
Weiter unten im Text habe ich meine Antwort konkretisiert:
"Ich habe das so ausprobiert, aber 7-zip zippt mir jetzt ALLE .txt Dateien in verschiedene .zip Dateien. Ich möchte aber die Dateien einzeln zippen."
Danke für deine Antwort.
Mit dem obigen Befehl zippt 7-zip einfach ALLE Dateien in verschiedene zip-Files!
Moin KSDKSD,
danke für die schnelle Antwort,
aber ich habe es immer noch nicht begriffen...
Mach bitte mal ein Beispiel mit "Diese Dateien in den Verzeichnissen liegen vor--> Zipfiles/Ergebnisse sollen sein...in folgenden Verzeichnissen"
P.S. Denn, was mich so verwirrt, "jede Datei einzeln zippen" sollte genau das Ergebnis des Vorgänger-Problems sein... die gepostete FOR-Anweisung...
Danke
Biber
danke für die schnelle Antwort,
aber ich habe es immer noch nicht begriffen...
Mach bitte mal ein Beispiel mit "Diese Dateien in den Verzeichnissen liegen vor--> Zipfiles/Ergebnisse sollen sein...in folgenden Verzeichnissen"
P.S. Denn, was mich so verwirrt, "jede Datei einzeln zippen" sollte genau das Ergebnis des Vorgänger-Problems sein... die gepostete FOR-Anweisung...
Danke
Biber
Keine Ursache, ich danke dir!
Also, der Ordnerinhalt sieht z.B. so aus:
test1.txt
test2.txt
text3.txt
bild1.bmp
bild2.bmp
bild3.bmp
zip (Ordner)
Mit dem obigen Befehl erstellt mir 7-Zip im Ordner zip folgende zip-Dateien:
test1.zip
test2.zip
test3.zip
bild1.zip
bild2.zip
bild3.zip
Und in jedem zip-File sind ALLE Daten des übergeordneten Ordner (auch der Ordner zip).
Mit "@liste.txt" kann man angeben, welche Dateiendungen das gezippt werden sollen! Der Inhalt meiner Datei sieht z.B. so aus:
"C:\TEST\*.txt"
D.h., dass nur Dateien mit der Endung .txt gezippt werden. Jetzt habe ich aber das Problem, dass 7-zip mir wieder folgende Ordner erstellt:
test1.zip
test2.zip
test3.zip
bild1.zip
bild2.zip
bild3.zip
Jetzt sind in jedem ZIP-File alle .txt Files!
Ich möchte aber, dass 7-zip für jede einzelne .txt Datei eine zip-Datei erstellt. Am Ende müsste es theoretisch wie folgt aussehen:
test1.zip (mit test1.txt)
test2.zip (mit test2.txt)
test3.zip (mit test3.txt)
Gruss
So, jetzt funktioniert der Befehl.
for %%i in (*.txt) do C:\Programme\7-Zip\7z.exe a c:\test\zip\%%~ni.zip %%i
Vielen Dank für eure Bemühungen und einen schönen Tag!
Also, der Ordnerinhalt sieht z.B. so aus:
test1.txt
test2.txt
text3.txt
bild1.bmp
bild2.bmp
bild3.bmp
zip (Ordner)
Mit dem obigen Befehl erstellt mir 7-Zip im Ordner zip folgende zip-Dateien:
test1.zip
test2.zip
test3.zip
bild1.zip
bild2.zip
bild3.zip
Und in jedem zip-File sind ALLE Daten des übergeordneten Ordner (auch der Ordner zip).
Mit "@liste.txt" kann man angeben, welche Dateiendungen das gezippt werden sollen! Der Inhalt meiner Datei sieht z.B. so aus:
"C:\TEST\*.txt"
D.h., dass nur Dateien mit der Endung .txt gezippt werden. Jetzt habe ich aber das Problem, dass 7-zip mir wieder folgende Ordner erstellt:
test1.zip
test2.zip
test3.zip
bild1.zip
bild2.zip
bild3.zip
Jetzt sind in jedem ZIP-File alle .txt Files!
Ich möchte aber, dass 7-zip für jede einzelne .txt Datei eine zip-Datei erstellt. Am Ende müsste es theoretisch wie folgt aussehen:
test1.zip (mit test1.txt)
test2.zip (mit test2.txt)
test3.zip (mit test3.txt)
Gruss
So, jetzt funktioniert der Befehl.
for %%i in (*.txt) do C:\Programme\7-Zip\7z.exe a c:\test\zip\%%~ni.zip %%i
Vielen Dank für eure Bemühungen und einen schönen Tag!
Moin KSDKSD,
Jepp... *sichVornKoppKlatsch*
Jetzt seh ich es auch...
Grüße
Biber
Zitat von @KSDKSD:
So, jetzt funktioniert der Befehl.
for %%i in (*.txt) do C:\Programme\7-Zip\7z.exe a c:\test\zip\%%~ni.zip %%i
So, jetzt funktioniert der Befehl.
for %%i in (*.txt) do C:\Programme\7-Zip\7z.exe a c:\test\zip\%%~ni.zip %%i
Jepp... *sichVornKoppKlatsch*
Jetzt seh ich es auch...
Vielen Dank für eure Bemühungen und einen schönen Tag!
Ebenfalls vielen Dank und schönes Wochenende.Grüße
Biber