
115129
24.09.2015, aktualisiert am 29.09.2015
Script zum Archivieren des Inhalts diverser Verzeichnisse als zip oder rar mit einer Variableübergabe
Guten Abend Community,
ich bin auf der Suche nach einer passablen Lösung meines Vorhabens und hoffe hier, wie auch schon so oft in der Vergangeheit, die passende Lösung zu finden.
Ich brauche ein Script, welches mir alle Dateien in einem "bestimmten" Ordner zu einer .zip oder .rar Datei archiviert.
Ein vorhandenes TCL-Script sollte das neue Script starten, wobei eine Variable (Pfad zu einem bestimmten Verzeichnis) mit übergeben wird.
Nun kommt das neue Script ins Spiel.
Dieses soll nun die Variable auswerten, den kompletten Inhalt des Zielverzeichnis als .zip oder .rar archivieren und prüfen ob das erzeugte Archiv größer als 2GB ist. Ist das erzeugte Archiv kleiner ist alles gut, wenn nicht soll dieses mit Teilarchive gezippt werden.
Die Verzeichnisstruktur spielt ebenso eine Rolle, hier mal eben einige Strukturbeispiele:
Wäre hierfür Batch oder Visual Basic geeignet?
Vielen Dank schonmal für alle Hilfestellungen.
Gruß,
Blattlaus
ich bin auf der Suche nach einer passablen Lösung meines Vorhabens und hoffe hier, wie auch schon so oft in der Vergangeheit, die passende Lösung zu finden.
Ich brauche ein Script, welches mir alle Dateien in einem "bestimmten" Ordner zu einer .zip oder .rar Datei archiviert.
Ein vorhandenes TCL-Script sollte das neue Script starten, wobei eine Variable (Pfad zu einem bestimmten Verzeichnis) mit übergeben wird.
Nun kommt das neue Script ins Spiel.
Dieses soll nun die Variable auswerten, den kompletten Inhalt des Zielverzeichnis als .zip oder .rar archivieren und prüfen ob das erzeugte Archiv größer als 2GB ist. Ist das erzeugte Archiv kleiner ist alles gut, wenn nicht soll dieses mit Teilarchive gezippt werden.
Die Verzeichnisstruktur spielt ebenso eine Rolle, hier mal eben einige Strukturbeispiele:
Übergebene Variable vom TCL-Script: ----------------------> Pfad wohin archiviert werden soll:
G:\Test1 --------------------------------------------------------------------> K:\Test1
G:\Test2 --------------------------------------------------------------------> K:\Test2
H:\Test4 --------------------------------------------------------------------> K:\Test4
H:\Test5 --------------------------------------------------------------------> K:\Test5
H:\Test6 --------------------------------------------------------------------> K:\Test6
J:\Test7 --------------------------------------------------------------------> K:\Test7
J:\Test8 --------------------------------------------------------------------> K:\Test8
J:\Test9 --------------------------------------------------------------------> K:\Test9
G:\Test1 --------------------------------------------------------------------> K:\Test1
G:\Test2 --------------------------------------------------------------------> K:\Test2
H:\Test4 --------------------------------------------------------------------> K:\Test4
H:\Test5 --------------------------------------------------------------------> K:\Test5
H:\Test6 --------------------------------------------------------------------> K:\Test6
J:\Test7 --------------------------------------------------------------------> K:\Test7
J:\Test8 --------------------------------------------------------------------> K:\Test8
J:\Test9 --------------------------------------------------------------------> K:\Test9
Wäre hierfür Batch oder Visual Basic geeignet?
Vielen Dank schonmal für alle Hilfestellungen.
Gruß,
Blattlaus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 283808
Url: https://administrator.de/forum/script-zum-archivieren-des-inhalts-diverser-verzeichnisse-als-zip-oder-rar-mit-einer-variableuebergabe-283808.html
Ausgedruckt am: 03.04.2025 um 04:04 Uhr
10 Kommentare
Neuester Kommentar
Hallo BlattlausOG!
Da es ja im Prinzip nur darum geht, den Laufwerksbuchstaben (= das erste Zeichen) des übergebenen Parameters durch "K" zu ersetzen und danach das Komprimierungsprogramm mit den passenden Parametern aufzurufen, sollte Batch genügen - etwa so:
Anstatt zunächst zu komprimieren und dann die Größe zu überprüfen würde ich etwa mit WinRAR einfach gleich die Option "-v2G" verwenden - wenn das Aufteilen nicht nötig ist, wirst Du ja ohnehin nur eine Datei erhalten ...
Grüße
bastla
Da es ja im Prinzip nur darum geht, den Laufwerksbuchstaben (= das erste Zeichen) des übergebenen Parameters durch "K" zu ersetzen und danach das Komprimierungsprogramm mit den passenden Parametern aufzurufen, sollte Batch genügen - etwa so:
@echo off & setlocal
set "Q=%~1"
if not exist "%Q%" (
echo Quelle nicht gefunden!
goto :eof
)
set "Z=K%Q:~1%"
echo Komprimiere "%Q%" nach "%Z%"
:: hier der Aufruf Deines Komprimierungsprogramms
Grüße
bastla
Hallo BlattlausOG!
verwendest, hast Du zumindest eine Chance, Fehler selbst zu sehen. 
Ansonsten solltest Du WinRAR zunächst das Ziel (die zu erstellende Archiv-Datei) und danach die Quelle übergeben ...
Grüße
bastla
Siehst du einen Fehler?
Vorweg ganz allgemein: Wenn Du als Zeile 1 (während der Testphase)@echo on
Ansonsten solltest Du WinRAR zunächst das Ziel (die zu erstellende Archiv-Datei) und danach die Quelle übergeben ...
Grüße
bastla
Hallo BlattlausOG!
Da
Den Quellpfad kannst Du ja aus %1 erhalten, und das Ziel hast Du ohnehin schon zusammengestellt - eine Schleife wäre dann gar nicht mehr nötig:
Grüße
bastla
Da
for /d
ja nur Verzeichnisse verarbeitet, aber schon in "%~1" ein Dateiname steht, kann natürlich "%~1\*.*" nicht funktionieren ...Den Quellpfad kannst Du ja aus %1 erhalten, und das Ziel hast Du ohnehin schon zusammengestellt - eine Schleife wäre dann gar nicht mehr nötig:
D:\WinRAR\rar.exe a -v15000 "K:\%DIR%\%NAME%.rar" "%~dp1"
bastla
Hallo BlattlausOG!
Schon mal
versucht? 
Deine beiden Zusatzwünsche sollten sich so umsetzen lassen:
Wenn Du mehr als eine Datei ausschließen wolltest, müsstest Du eine Textdatei (zB D:\Exclude.txt) erstellen, die unerwünschten Dateien zeilenweise eintragen und die Textdatei so verwenden:
Grüße
bastla
Schon mal
D:\WinRAR\rar.exe /?
Deine beiden Zusatzwünsche sollten sich so umsetzen lassen:
echo meta.txt|D:\WinRAR\rar.exe a -v1900000 "K:\%DIR%\%NAME%.rar" "%~dp1" -ep -x@
D:\WinRAR\rar.exe a -v1900000 "K:\%DIR%\%NAME%.rar" "%~dp1" -ep -x@D:\Exclude.txt
bastla