In einer Batch-Datei die Größe einer Datei ermitteln

URL dieses Beitrags: http://blog.stefan-macke.com/2009/01/29/in-einer-batch-datei-die-groesse-einer-datei-ermitteln/

Heute musste ich in unserem Anmeldescript eine neue Softwareversion verteilen. Leider konnte ich die Entscheidung, ob die aktuellste Version schon installiert ist, nicht von fehlenden oder zusätzlichen Dateien abhängig machen, sondern nur anhand der Dateigröße der geänderten Dateien. Dafür musste ich also eine Möglichkeit finden, in meiner Batchdatei diese Dateigröße zu ermitteln.

Nach ein paar Versuchen, bin ich bei dieser Variante gelandet:

  1. rem prüfen, ob schon die neuste Version vorliegt (über Dateigröße)
  2. set Datei=C:\DasProgramm\DieDatei.exe
  3. set Dateigroesse=272530
  4. for /f "tokens=1-3" %%i in (dir %Datei% /-c ^|find "Datei(en)" ^|find "Bytes"’) do set Groesse=%%k
  5. rem String in Zahl umwandeln (Leerzeichen entfernen)
  6. set /a Groesse=%Groesse%/1
  7. if "%Groesse%"=="%Dateigroesse%" echo Programm ist bereits aktuell
  8. if not "%Groesse%"=="%Dateigroesse%" xcopy "Z:\DasProgramm" "C:\DasProgramm\" /s /y

Kommentare zu diesem Beitrag

  1. Gravatar Knut
    Am 30. Januar 2009 um 07:39 Uhr

    Coole Idee.
    Ich habe Software nach folgenden Schema verteilt:

    * Auf Servershare geprüft ob PRG.version.%computername%.txt existiert
    * Nein, dann Software aufspielen/konfigurieren und Datei auf Servershare erzeugen
    * Ja, nix machen.

    Hat für mich den Vorteil, dass ich gezielt einzelne Arbeitsplätze bei Bedarf aktualisieren kann. Z.B. wenn ein User sich das Programm abgeschossen/verstellt hat.

    Das mit der Dateigröße hat aber auch sehr viel Charme

  2. Gravatar Stefan
    Am 30. Januar 2009 um 08:53 Uhr

    @Knut: Deine Lösung finde ich auch sehr gut, vor allem, weil man dann auch sieht, auf welchen Clients die Software denn nun eigentlich schon aktualisiert wurde. Ich müsste jetzt nochmal ein Script laufen lassen, um die Versionen auf den Clients zu ermitteln :-(

Einen Kommentar schreiben

XHTML: Diese Tags sind erlaubt: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>