Dabei seit: 09.08.2002
Beiträge: 413
Herkunft: Schwabenländle
Batch-Script-Tools
Ich habe mich etwas mit der Batch Programmierung beschäftigt und habe mir ein paar Scripte erstellt.
Die Scripte sind für deutsche und englische Betriebssysteme geeignet und laufen auf jedem XP, Vista & Win7 System. Wenn ROBOCOPY benötigt wird, dann muss auf XP Systemen die Robocopy Version aus dem Server2003 Toolkit installiert werden (oder einfach in das Scriptverzeichniss kopiert werden).
Die Scripte sind relativ einfach aufgebaut und können für den geneigten Scrtipter als Einführung genutzt werden.
- Synchronize-xyz.bat
Zweck:
Das Script spiegelt eine komplette Verzeichnisstruktur mit Hilfe von Robocopy. Es zeigt die Anzahl der Dateien und die grösse des belegten Speicherplatz an. Es wird bei Jeder Spiegelung ein Log erstellt.
Bei der Spiegelung werden nur neue und veränderte Dateien in das Ziel kopiert. Dateien die in der Quelle nicht mehr vorhanden sind, werden im Ziel gelöscht!
Benutzung:
Das Quell- & Zielverzeichnis muss im Script vorher eingetragen werden. Die Batchdatei nach belieben umbenennen z.B. nach "Synchronize-FotoArchiv mit externer HD.bat" und dann einfach die Batchdatei ausführen.
- emptyTEMP.bat
Zweck:
Damit wird einfach nur das Windows-Temp Verzeichniss geleert. Dieses Temp Verzeichnis füllt sich schnell mit nutzlosen Dateien und müllt die Festplatte voll -> verschwendeter Speicherplatz und hohe Fragmentation. Es zeigt das verwendete Datenvolumen des Temp-Ordners VOR und NACH der Löschaktion an. Es unterbricht die Löschaktion, wenn ein bestimmtes Programm ausgeführt wird.
Benutzung:
Einfach nur die Batchdatei ausführen.
- CopyOver-Script_DROP.bat
Zweck;
Erstellt eine Kopierliste welche dann zu einem späteren Zeitpunkt ausgeführt werden kann. Die zu kopierenden Dateien werden durch das ausführen der Batchdatei nacheinander kopiert. -> maximiert Performance, minimiert Fragmentation
Benutzung:
Die Batchdatei in den Ordner kopieren, in welchen dann später die Dateien hinein kopiert werden sollen. (Es wird vor dem eigentlichen kopieren, automatisch ein Unterordner erstellt indem die Daten dann kopiert werden -> "\CopyDir".)
Wenn der User im Explorer eine oder mehrere Datei(en) gleichzeitig auf diese Batchdatei per Drag&Drop zieht, dann werden die Kopierparameter erst einmal in eine liste geschrieben. Der Kopiervorgang wird erst ausgeführt wenn die Batchdatei (CopyOver_DROP-Script.bat) separat gestartet wird.
Die Kontextmenu Version ist sehr experimentell und noch buggy. Windows verschluckt sich beim hinzufügen der Kopiereinträge und deshalb kann es vorkommen, dass bei mehrfach selektion ein paar Dateien nicht in die Kopierliste eingetragen werden.
Windows startet für jede Datei ein Batchscript in sehr schneller reihenfolge und dabei gehen dann ab und zu ein paar Einträge in die Kopierliste verloren... -> bei mehrfach selektion sind nicht alle Dateien/Ordner in der Kopierliste.
- 7zip-UltraPacker_DROP-Script.bat
Zweck:
Re/Komprimiert Dateien mit der höchsten Komprimierungsstufe von 7-Zip. Es können mehrere Dateien/Ordner auf einmal verarbeitet werden. Die Dateien werden dann nacheinander Komprimiert.
Oft sind Dateien aus dem Internet nur schwach komprimiert. Ich sammle viele verschiedene Dateien in einem Archiv und lege Wert darauf, dass diese Daten so wenig Speicherplatz wie möglich einnehmen. Mit der Rechenpower heutiger CPUs ist die Komprimierungszeit unbedeutend geworden. Mit der Re/Komprimierung kann man sich einige 100 MB bis Gigabytes sparen.
Das Script zeigt die aktuelle Grösse der Datei und die Grösse nach der Komprimierung an und entscheidet welche Datei behalten werden soll. (Bereits maximal komprimierte Dateien werden durch die Rekompression sogar grösser)
Benutzung:
Datei(en) per Drag and Drop auf die Batchdatei ziehen. Es werden alle Datein nach einander komprimiert, mit der Quelldatei verglichen und dann entweder verworfen oder behalten.
Bereits komprimierte Dateien (exe,7z,ZIP,RAR) werden temporär entpackt um eine maximale Komprimierung zu ermöglichen.
Mit Größenvergleich und einer Zusammenfassung.
Durch das Kontextmenü wird für jede Datei ein Batchfenster geöffnet. Dadurch wird auch für jede Datei gleichzeitig die Kompression gestartet -> keine Sequenzielle bearbeitung. Das sollte aber bei multi CPU Systemen kein nachteil sein, denn die gesammte komprimierungs Zeit bleib gleich.
Das Paket enthält einen kleinen Installer der die Scripte nach "%ProgramFiles%\_BATCH_TOOLS_" kopiert und unter Windows 7 auch ein Explorer-Kontextmenu erstellt. Dazu muss das Script als Admin ausgeführt werden. Mit dem Kontextmenu können die Scripte direkt auf die Dateien/Verzeichnisse angewendet werden. Windows beschränkt die Anzahl der maximal gewählten Dateien/Ordner auf 15. Ab dieser Zahl verschwindet der Kontextmenu Eintrag einfach, warum auch immer.
mfg
__________________ §1
1.1 Oben genanntes ist nur rein spekulativ und aus dem Zusammenhang gerissen.
1.2 Für Schäden die durch die Befolgung der Ratschläge entstehen wird keine Haftung übernommen.
2. Erfolge und Richtigkeit der Beiträge sind mit Ehrfurcht zu Huldigen.
Dabei seit: 17.03.2002
Beiträge: 4.211
Herkunft: Erding
Vielen Dank für die kleine Skriptsammlung.
Gerade das Synchronize Skript ist nützlich für mich. Habe das daher gestern mal verwendet und hat auch einwandfrei funktioniert.
Nur von der etwas geringen Geschwindigkeit war ich etwas überrascht. Habe ein lokales Verzeichnis mit ca. 6300 Dateien mit einem Netzlaufwerk (6000 Dateien) synchronisiert. Im Prinzip gab es also eigentlich relativ wenig zu kopieren. Anscheinend nimmt selbst das Prüfen auf Veränderungen einige Zeit in Anspruch. Aber das wird denk ich alles Robocopy erledigen, wodurch du darauf keinen Einfluss hast.
Dabei seit: 09.08.2002
Beiträge: 413
Herkunft: Schwabenländle
Themenstarter
Robocopy ist beim kopieren eigentlich schneller als Windows. Auf veränderung wird On-the-Fly überprüft und wird von der CPU in millisekunden erledigt.
Ich vermute mal eher, dass das Netzlaufwerk stark fragmentiert ist. Dann erhöhen sich die zugriffszeiten. Oder es liegt an der LAN Verbindung, wenn das Netzlaufwerk ständig auf existenz abgefragt, dann muss das NAS auch erst die Daten generieren und an den PC schicken. Das erhöht die Latenz.
Auf USB Platten hatte ich bisher keine Probleme.
Versuche mal das NAS zu defragmentieren. Ansonsten kann man das Problem umgehen indem man die Abfrage ausschaltet und mit Robocopy einfach stur die Daten auf das NAS kopiert.
Damit wird einfach nur kopiert. Das kann u.U. sogar schneller sein als mit /MIR. Vor allem wenn erstmals ein grosses Archiv mit vielen kleinen Dateien kopiert wird, sollte man erstmal mit /Create die Dateisystem Einträge erledigen und dann mit /MIR. Aber für den heimgebrauch reichts auch so.
mfg
__________________ §1
1.1 Oben genanntes ist nur rein spekulativ und aus dem Zusammenhang gerissen.
1.2 Für Schäden die durch die Befolgung der Ratschläge entstehen wird keine Haftung übernommen.
2. Erfolge und Richtigkeit der Beiträge sind mit Ehrfurcht zu Huldigen.