Dateigröße per Batch abfragen
Ich habe mir eine kleine Batch-Datei geschrieben, mit der ich meine wichtigsten Daten sichere. Jedes Mal, wenn sie läuft, hängt sie die geänderten Dateien an eine ZIP-Datei an. Diese möchte ich nun automatisch auf eine CD brennen, aber nicht jeden Tag, sondern erst wenn sie 700 MByte groß geworden ist und sich das Verbrauchen eines Rohlings lohnt. Leider scheitere ich daran, die Dateigröße von der Batch-Datei aus abzufragen.
Ich habe mir eine kleine Batch-Datei geschrieben, mit der ich meine wichtigsten Daten sichere. Jedes Mal, wenn sie läuft, hängt sie die geänderten Dateien an eine ZIP-Datei an. Diese möchte ich nun automatisch auf eine CD brennen, aber nicht jeden Tag, sondern erst wenn sie 700 MByte groß geworden ist und sich das Verbrauchen eines Rohlings lohnt. Leider scheitere ich daran, die Dateigröße von der Batch-Datei aus abzufragen.
Zumindest unter Windows 2000 und XP bringt die Shell alles Nötige bereits mit. Die Größe Ihrer Datei ermitteln Sie mit der Zeile
for %%F in (D:\backup.zip) do set groesse=%%~zF
(Diese Syntax gilt innerhalb einer Batch-Datei; auf der Kommandozeile selbst muss man statt der doppelten Prozentzeichen einfache verwenden.) Der Trick ist, dass der for-Befehl verschiedene Angaben über eine Datei liefern kann. Dazu setzt man zwischen das Prozentzeichen und den Namen der Laufvariable eine Tilde und einen oder mehrere Kennbuchstaben. So liefert z die Dateigröße, d das Laufwerk, auf dem die Datei liegt, und x die Dateierweiterung. Eine komplette Liste liefert der Befehl for /? oder die Windows-Hilfe.
Numerische Vergleiche sind mit dem Befehl if kein Problem:
if %groesse% geq 700000000 goto brennen
Dabei steht geq für „größer oder gleich“. Auch hier kann man sich mit if /? oder in der Windows-Hilfe eine Aufstellung der zur Verfügung stehenden Operatoren besorgen. In c't 16/03 gab es übrigens einige Artikel zum Thema Kommandozeile und Batch-Programmierung. (hos)
(hos)