Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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)

Frage Entwicklung Batch & Shell

Mitglied: Tigre-Rojo

Tigre-Rojo (Level 1) - Jetzt verbinden

31.01.2010, aktualisiert 14:57 Uhr, 12632 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: sputnik
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 ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (22)

Frage von patz223 zum Thema Windows Userverwaltung ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (19)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...