Mehrere Ordner per batch zippen
Hallo Leute,
ich versuche gerade ein kleines Batch Skript schreiben das in einem Verzeichnis alle enthaltenen Ordner jeweils in ein eigenes Zip File (das so heißen soll wie der Ordner) packt.
Also das bedeutet, wenn sich drei Ordner in dem betrachteten Verzeichnis befinden, sollen am Ende 3 zip Files vorhanden sein mit den jeweiligen Ordnernamen.
Ich nutze Win2K kann also nicht auf XP Zip Funktionalität zurückgreifen. Ich arbeite hingegen mit WinZip und den damit angebotenen Kommandozeilenoptionen
Mein Ansatz
Hat jemand von euch eine, Idee, eigentlich fehlen mir ja nur 2 Sachen, der Weg die Verzeichnisse einzeln anzusteuern und das richtige ansprechen des WZZIP Befehls in der FOR Schleife.
Gruß
deadwalker
ich versuche gerade ein kleines Batch Skript schreiben das in einem Verzeichnis alle enthaltenen Ordner jeweils in ein eigenes Zip File (das so heißen soll wie der Ordner) packt.
Also das bedeutet, wenn sich drei Ordner in dem betrachteten Verzeichnis befinden, sollen am Ende 3 zip Files vorhanden sein mit den jeweiligen Ordnernamen.
Ich nutze Win2K kann also nicht auf XP Zip Funktionalität zurückgreifen. Ich arbeite hingegen mit WinZip und den damit angebotenen Kommandozeilenoptionen
Mein Ansatz
@echo off
cls
echo Please stand by: Zipping files.......
echo.
for /F %%i in ('WIE kann ich hier über die Verzeichnisse springen') do @start C:\Program Files\WinZip\WZZIP.exe -rp %%i.zip *.*
(dies startet den zip per Winzip, der Befehl alleine arbeitet einwandfrei, allerdings bekomm ich ihn nicht richtig in die FOR Schleife eingebunden, keine Ahnung wie man den einbetten muss, mit " oder ' ??)
@echo on
Hat jemand von euch eine, Idee, eigentlich fehlen mir ja nur 2 Sachen, der Weg die Verzeichnisse einzeln anzusteuern und das richtige ansprechen des WZZIP Befehls in der FOR Schleife.
Gruß
deadwalker
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 64640
Url: https://administrator.de/forum/mehrere-ordner-per-batch-zippen-64640.html
Ausgedruckt am: 12.03.2025 um 02:03 Uhr
12 Kommentare
Neuester Kommentar
Moin deadwalker
dann müsste das hier (mal ungetestet) funktionieren
Also das bedeutet, wenn sich drei Ordner in dem betrachteten Verzeichnis befinden, sollen
am Ende 3 zip Files vorhanden sein mit den jeweiligen Ordnernamen.
Also Annahmeam Ende 3 zip Files vorhanden sein mit den jeweiligen Ordnernamen.
Obergeordnetes Verzeichnis=C:\OberDIR
Unterverzeichnis 1=C:\OberDIR\SubDir1
Unterverzeichnis 2=C:\OberDIR\SubDir2
Unterverzeichnis 3=C:\OberDIR\SubDir3
usw....
Zipablageverzeichnis=C:\Zipdir
Unterverzeichnis 1=C:\OberDIR\SubDir1
Unterverzeichnis 2=C:\OberDIR\SubDir2
Unterverzeichnis 3=C:\OberDIR\SubDir3
usw....
Zipablageverzeichnis=C:\Zipdir
dann müsste das hier (mal ungetestet) funktionieren
@echo off
cls
echo Please stand by: Zipping files.......
echo.
Set Oberdir=C:\OberDir
Set Zieldir=C:\Zipdir
for /F %%i in ('dir %Oberdir% /b /a:d') do @start C:\Program Files\WinZip\WZZIP.exe -rp %Zipdir%\%%i.zip %Oberdir%\%%i\*.*
@echo on
Gruß Andreascls
echo Please stand by: Zipping files.......
echo.
Set Oberdir=C:\OberDir
Set Zieldir=C:\Zipdir
for /F %%i in ('dir %Oberdir% /b /a:d') do @start C:\Program Files\WinZip\WZZIP.exe -rp %Zipdir%\%%i.zip %Oberdir%\%%i\*.*
@echo on
Hallo Deadwalker!
Vielleicht hilft das: http://support.microsoft.com/kb/156276/de
Noch eine Frage: Wie rufst Du den Batch eigentlich auf?
Grüße
bastla
Vielleicht hilft das: http://support.microsoft.com/kb/156276/de
Noch eine Frage: Wie rufst Du den Batch eigentlich auf?
Grüße
bastla
Hallo Deadwalker!
Eine Idee hätte ich noch (ist zwar nicht ganz so komfortabel, könnte aber klappen): Gib dem Batch beim Aufruf als Parameter "." mit und füge am Anfang noch folgende Zeile ein:
) interessiert:
Grüße
bastla
Eine Idee hätte ich noch (ist zwar nicht ganz so komfortabel, könnte aber klappen): Gib dem Batch beim Aufruf als Parameter "." mit und füge am Anfang noch folgende Zeile ein:
cd /d "%~dp1"
was mach ich falsch???
Das kann ich nicht sagen, aber falls Dich der von mir verwendete Suchbegriff (für Google w2000 cmd "UNC-Pfade werden nicht unterstützt."
Grüße
bastla
Hallo Deadwalker!
Drum hatte ich oben noch (nachträglich) nach der Startart gefragt ...
Wenn Du den Batch per Doppelklick startest, kannst Du natürlich den "." nicht mitgeben, aber Du könntest einfach einen der zu packenden Ordner auf den Batch ziehen.
Dann würde sich übrigens zur Sicherheit im Batch vorweg zumindest noch ein
empfehlen, damit der Batch wirklich nur ausgeführt wird, wenn ein Ordner übergeben (und nicht mit bloßem Doppelklick gestartet) wurde.
Grüße
bastla
Drum hatte ich oben noch (nachträglich) nach der Startart gefragt ...
Wenn Du den Batch per Doppelklick startest, kannst Du natürlich den "." nicht mitgeben, aber Du könntest einfach einen der zu packenden Ordner auf den Batch ziehen.
Und was bewirkt denn der Befehl? cd /d "%~dp1"
Mit dem Schalter "/d" kann der "cd"-Befehl auch gleich das Laufwerk wechseln, und "%~dp1" steht für Laufwerk (drive) und Pfad des ersten Parameters (was gleichbedeutend mit dem "beinhaltenden" Ordner ist).Dann würde sich übrigens zur Sicherheit im Batch vorweg zumindest noch ein
if not exist %1 goto :eof
Grüße
bastla
So jetzt mach ich mich mal endgültig zum
affen, aber verdammt wie übergeb ich
nochma nen Parameter wenn ich das Skript mit
Doppelklick starte?
%1 irgendwie so?
Und was bewirkt denn der Befehl? cd /d
"%~dp1"
Viele Grüße
affen, aber verdammt wie übergeb ich
nochma nen Parameter wenn ich das Skript mit
Doppelklick starte?
%1 irgendwie so?
Und was bewirkt denn der Befehl? cd /d
"%~dp1"
Viele Grüße
Ohman deadwalker,
du solltest doch bastla's frage beantworten wie du den Batch aufrufen willst!!! Und vorallem wo du die Zip-dateien hinschieben willst?
hier noch mal mein Ansatz von oben etwas modifizierter
-------schnipp zipme.cmd---------------------------
@echo off
cls
echo Please stand by: Zipping files.......
echo.
:main
springe von ein Verzeichnis zum nächsten mittels CD
...und rufe jeweils mittels call :zipsubdir . die Ziproutine auf
... eventuelle weiterverarbeitung
goto :EOF
:zipsubdir
Set Oberdir=%1
Set Zieldir=C:\ZIPTEMP
SET zip_prog=C:\Programme\WinZip\WZZIP.exe
for /F %%i in ('dir %Oberdir% /b /a:d') do (@start %zip_prog% -rp %Zieldir%\%%i.zip %Oberdir%\%%i\*.*)
goto :EOF
ende schnipp---------------------------------
Zu deiner Frage hätte ein einfaches cd /? an der Console geholfen und mit "%dp1" springt dein Script dann in das Übergebene Verzeichnis von %1 (in diesem Falle halt das aktuelle durch "." gekennzeichnete)@echo off
cls
echo Please stand by: Zipping files.......
echo.
:main
springe von ein Verzeichnis zum nächsten mittels CD
...und rufe jeweils mittels call :zipsubdir . die Ziproutine auf
... eventuelle weiterverarbeitung
goto :EOF
:zipsubdir
Set Oberdir=%1
Set Zieldir=C:\ZIPTEMP
SET zip_prog=C:\Programme\WinZip\WZZIP.exe
for /F %%i in ('dir %Oberdir% /b /a:d') do (@start %zip_prog% -rp %Zieldir%\%%i.zip %Oberdir%\%%i\*.*)
goto :EOF
ende schnipp---------------------------------
Im Falle meiner Lösung müsstest du entweder dieses Script mit einer Main-Prozedur erweitern, die durch deine gewünschten Verzeichnisse springt oder du hast ein obergeordnetes Script, welches dieses Batch dann aufruft mittels \\server\script\zippme.cmd "." (aber die Anführungszeichen weglassen !!!)
Um flexibel zu bleiben, kannst du alternativ auch noch ein Zieldir als %2 übergeben und in diesem Schnippsel.cmd die Zeile Set Zieldir=C:\ZIPTEMP durch SET Zieldir=%2 ersetzen.
So long Andreas
PS bei mir funktioniert das auch mit Leerzeichen und UNC-Pfaden