Dateien in einem Ordner nacheinander einzeln zippen, wie definiere ich die zu zippende Datei? (Batch, DOS)

Mitglied: Tigre-Rojo

Tigre-Rojo (Level 1) - Jetzt verbinden

31.01.2010, aktualisiert 14:57 Uhr, 15969 Aufrufe, 15 Kommentare

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
Mitglied: 48507
48507 (Level 2)
31.01.2010 um 15:18 Uhr
Du brauchst eine Schleife. So ungefähr:
Bitte warten ..
Mitglied: bastla
31.01.2010 um 15:56 Uhr
... 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]
Bitte warten ..
Mitglied: Tigre-Rojo
31.01.2010 um 16:23 Uhr
Hallo bastla,

danke.

Nur damit ich es verstehe:

- %%1 ist die erste Datei im Ordner?

- was ist denn %%~ni.zip ? oder soll das %%i heißen?

Deine Anmerkung werde ich befolgen und das ganze jetzt mal testen.
Melde mich dann.
Bitte warten ..
Mitglied: bastla
31.01.2010 um 16:30 Uhr
Hallo Tigre-Rojo!
- %%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
formulieren.

Grüße
bastla
Bitte warten ..
Mitglied: Tigre-Rojo
31.01.2010 um 16:39 Uhr
Hallo Bastla,

prima.Danke. Jetzt verstehe ich es. (die "1" sollte ein "i" sein).

Aber ich mache wohl etwas noch falsch, denn "es geht nicht" - was nicht geht kann ich nicht sagen, weil "das DOS Fenster sofort wieder zu geht". ichblamiermich

Zum Testen habe ich in einer eigenen CMD stehen:

Was übersehe ich?

Gruß
Tigre
Bitte warten ..
Mitglied: bastla
31.01.2010 um 16:54 Uhr
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.

Was übersehe ich?
Fehlt Das schließende Anführungszeichen nach *.* in der ersten Zeile auch in Deinem Batch oder nur in der geposteten Version?

"F:\gezippt" und "F:\rohdaten" sollten übrigens bereits vorweg erstellt worden sein.

Grüße
bastla
Bitte warten ..
Mitglied: Tigre-Rojo
31.01.2010 um 17:06 Uhr
Zitat von @bastla:
Fehlt Das schließende Anführungszeichen nach *.* in der ersten Zeile auch in Deinem Batch oder nur in der geposteten
Version?

Das wars. Danke.

Noch eine Frage:

Zitat von @bastla:
[Edit] Verschieben vom Errorlevel des ZIP-Vorganges abhängig gemacht [/Edit]

Inwiefern?

Gruß
Tigre
Bitte warten ..
Mitglied: bastla
31.01.2010 um 17:11 Uhr
Hallo Tigre!
Verschieben vom Errorlevel des ZIP-Vorganges abhängig gemacht
Inwiefern?
Beim Verknüpfen zweier Anweisungen mit "&&" wird die zweite nur ausgeführt, wenn die erste mit Errorlevel 0 beendet wurde - wenn also in diesem Fall das Zippen ohne Fehler geklappt hat (soferne, was ich sehr annehme, "7zip" einen ordnungsgemäßen Fehlercode liefert); das Gegenstück wäre übrigens eine Verknüpfung mit "||" - dann wird nur im Fehlerfall (Errorlevel ungleich 0) die folgende Anweisung ausgeführt.

Grüße
bastla
Bitte warten ..
Mitglied: Tigre-Rojo
31.01.2010 um 17:18 Uhr
Hallo bastla!

Perfekte Antwort. Danke. Danke. Danke.

Du hast mir die nicht gestellte Frage beantwortet, wie ich denn im a) Erfolgsfall b) nicht Erfolgsfall jeweils eine E-Mail mit enstprechendem Text
sende; das bastel ich mir mal zusammen, wenns nicht klappt, bis gleich im neuen Thread. :-) face-smile

Gruß
Tigre
Bitte warten ..
Mitglied: KSDKSD
25.02.2010 um 08:49 Uhr
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.
Bitte warten ..
Mitglied: Biber
25.02.2010 um 09:06 Uhr
Moin KSDKSD,

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.
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.

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
Bitte warten ..
Mitglied: KSDKSD
25.02.2010 um 09:12 Uhr
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!
Bitte warten ..
Mitglied: Biber
25.02.2010 um 09:16 Uhr
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
Bitte warten ..
Mitglied: KSDKSD
25.02.2010 um 09:22 Uhr
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!
Bitte warten ..
Mitglied: Biber
26.02.2010 um 19:17 Uhr
Moin KSDKSD,

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

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
Bitte warten ..
Heiß diskutierte Inhalte
MikroTik RouterOS
Simples VLAN bringt mich zur Verzweiflung
gelöst Daniel26Vor 20 StundenFrageMikroTik RouterOS27 Kommentare

Moin, ich bin sehr neu im Mikrotik-Bereich, aber schon dabei, aufzuegeben. Wir verbauen in unserer Hardware Switche von Mikrotik. Bisher waren da Netgear-Teile drin, ...

LAN, WAN, Wireless
Switch läuft, ist aber nicht erreichbar
gelöst AndiPeeVor 1 TagFrageLAN, WAN, Wireless19 Kommentare

Hallo zusammen, mein Problemfall einleitend kurz umrissen: Privates Netzwerk Es funktioniert grundsätzlich, allerdings habe ich immer mal ein paar Ausfälle im WLAN-Netzwerk und bin ...

Windows Netzwerk
Sporadisch kein Netz auf mehreren Win10-Maschinen
SolarflareVor 1 TagFrageWindows Netzwerk6 Kommentare

Hallo, ich habe seit Monaten einen eigenartigen Effekt in unserem Windows-Netz. Windows-Domäne mit ca. 100 Maschinen, alle Clients aktuelles Windows 10. Die Maschinen hängen ...

Microsoft
STRG + ALT + ENTF
TezzlaVor 13 StundenAllgemeinMicrosoft11 Kommentare

Mahlzeit zusammen, wir haben gerade im Kollegenkreis über Sinn und Unsinn der Sperrbildschirmentriegelung STRG + ALT + ENTF unter Win10 diskutiert. Mich würde hierzu ...

VB for Applications
Auf SQL Datenbank schreiben welche Sich im Firmennetzwerk befindet
RSST-SORVor 1 TagFrageVB for Applications12 Kommentare

Hallo Ich habe ein funktionierendes VBA Makro im EXCEL welches mit: conn.Open "driver={SQL Server};" & _ "server=RSST-OFFICEIII\RSSTSQLSERVER;database=RSSTZeiterfassung;" Daten in die Tabelle schreibt Nun würde ...

Windows 10
SMB Performance VPN
Guhl22Vor 1 TagFrageWindows 104 Kommentare

Hallo zusammen, wir stellen bei uns in der Firma ein sehr merkwürdiges Phänomen fest. Zugriffe über VPN auf gemappte Netzlaufwerke (über vbs Logon Skript ...

E-Mail
Alternative zu horde webmail
fisch56Vor 1 TagFrageE-Mail6 Kommentare

Hallo, ich habe das horde webmail auf meinem Server, macht allerdings Probleme. Suche daher eine Alternative. Das Postfach hat viele Unterordner, die z.B. bei ...

Outlook & Mail
Outlook Ansicht
gelöst Kisters.SolutionsVor 1 TagFrageOutlook & Mail9 Kommentare

Hallo zusammen, seit kurzem sieht der Posteingang im Outlook 2019 eines Kollegen plötzlich anders aus. Standard ist das die ungelesenen Mails mit einem blauen ...