Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst 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, 13448 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:
01.
:: 1.0 ins Verzeichnis mit den ungezippten Dateien wechseln 
02.
F: 
03.
cd F:"\testdaten\ungezippte Dateien" 
04.
 
05.
:: 1.1 Erklärung zu 1.0 
06.
:: alle Dateien in diesem Ordner sind nach folgendem Schema benannt 
07.
:: 2009-01-12~text.bkf, also JJJJ-MM-TT~text.bkf 
08.
:: "~text" ist immer gleich, also immer "~text" 
09.
:: Die Datei beginnt in 2009 z.B. mit 2009-10-21~text.bkf und wird hochgezählt bis 2010-01-20~text.bkf 
10.
:: Grundsätzlich fortlaufend, aber teilweise fehlt auch mal ein Tag, auf 2009-11-22~text.bkf kommt dann 2009-11-25~text.bkf 
11.
 
12.
 
13.
: ---------- 2.0 Brauche Hilfe --------------- 
14.
:: 2.0  
15.
:: "Ermittle die erste Datei, ordne die Datei einer Variablen zu, damit diese Datei 
16.
:: im nächsten Schritt mit 7-Zip gezippt werden kann ... 
17.
 
18.
 
19.
: Funktioniert. 
20.
:: 3.0 Zippe die Datei und speichere die gezippte Datei 
21.
:: (erst Zielordner\Name der gezippten Datei.zip, dann Quellordner) 
22.
 
23.
Set ZIPFILE=%in2.0definierteDatei%.zip ' ist nur ein Beispielname 
24.
 
25.
7z.exe a -r -tzip "J:\testgezippt\%ZIPLFILE%" "F:\testdaten\ungezippte Dateien\"in2.0definierteDatei" 
26.
 
27.
 
28.
: Funktioniert. 
29.
:: 4.0 Verschiebe die %in2.0definierteDatei" (also die ungezippte datei) 
30.
 
31.
MOVE /Y "F:\testdaten\ungezippte Dateien\%in2.0definierteDatei% J:\testgezippt\rohdaten 
32.
 
33.
 
34.
: ---------- 5.0 Brauche Hilfe --------------- 
35.
:: 5.0 Fange bei 2.0 wieder an ... 
36.
 
37.
 
38.
:: Funktioniert. 
39.
:: 6.0 Wenn fertig, dann erstelle Fertig.txt in und versende diese per E-Mail 
40.
:: die Definiton der folgenden Variablen möchte ich hier nicht nennen :-) 
41.
 
42.
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
Mitglied: 48507
31.01.2010 um 15:18 Uhr
Du brauchst eine Schleife. So ungefähr:
01.
FOR %%i IN ("F:\testdaten\ungezippte Dateien\*.*) DO 7z.exe a -r -tzip "J:\testgezippt\%ZIPFILE%"
Bitte warten ..
Mitglied: bastla
31.01.2010 um 15:56 Uhr
... bzw
01.
FOR %%i IN ("F:\testdaten\ungezippte Dateien\*.*) DO ( 
02.
    7z.exe a -tzip "J:\testgezippt\%%~ni.zip" "%%i" && MOVE "%%i" "J:\testgezippt\rohdaten" 
03.
)
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
FOR %%i IN ("F:\testdaten\ungezippte Dateien\20*-text.bkf) DO (
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:

01.
FOR %%i IN ("F:\test\*.*) DO ( 
02.
    7z.exe a -tzip "F:\gezippt\%%~ni.zip" "%%i" && MOVE "%%i" "F:\rohdaten" 
03.
)
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
pause
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.

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 ..
Ähnliche Inhalte
Batch & Shell

Automatisch dateien die sich in einem Ordner befinden, zippen

Frage von cdm1970Batch & Shell6 Kommentare

Hallo, ich habe folgende Frage: Ich habe in mehrere Ordner sehr viele .html Dateien für unsere Online Shop. Ich ...

Batch & Shell

Dateien mit fast gleichem Namen per Batch zippen

Frage von tiolocoBatch & Shell5 Kommentare

hallo, ich bin neu hier und ein absoluter laie was solche dinge betrifft. hab auch versucht evtl. eine lösung ...

Windows 7

Mit einer Batch-Datei einzelne Ausschnitte aus einer Text-Datei löschen

gelöst Frage von meisterluehrsWindows 719 Kommentare

guten morgen, ja ich weiss haben schon weiss gott wie viele andere gefragt Aber, bei mir hilft nix :/ ...

Batch & Shell

Batch nach bestimmten Ordner suchen und diese zippen

gelöst Frage von windelterroristBatch & Shell3 Kommentare

Hallo! Ich stehe mit Batch gerade etwas an Bitte um Verständnis, wenn ich das ein oder andere falsch formuliere, ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 1 TagHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 1 TagRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 2 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 2 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Sicherheit
Verbindliche Zustellung per E-Mail?
Frage von ahussainSicherheit18 Kommentare

Hallo allerseits, ein Kunde von mir nutzt intensiv Fax. Hauptgrund: zusammen mit einer Empfangsbestätigung ist eine verbindliche Zustellung gewährleistet. ...

Router & Routing
Mikrotik: Routing zwischen Interfaces mit Geräten ohne Gateway
Frage von TonLichtVideoRouter & Routing18 Kommentare

Hallo zusammen, ich komme aus dem Veranstaltungstechnik Bereich und habe zwei Netze um verschiedene Hardware zu Remoten. CONTROL1 192.168.1.0/24 ...

Linux Netzwerk
Raspberry Pi 3: WLAN Power save deaktivieren
Frage von nordie92Linux Netzwerk14 Kommentare

Moin moin, mein Raspberry Pi 3 Model B benötigt eine dauerhaft aktive WLAN-Verbindung. Leider bricht die WLAN-Verbindung nach einigen ...

SAN, NAS, DAS
Entscheidung SAN Dell oder HP
Frage von VincorSAN, NAS, DAS13 Kommentare

Hallo, wir wollen uns für unsere Hyper V Umgebung eine neue SAN Anschaffen. Es laufen 30 VM's darunter, DC; ...