In einer Batch-Datei die Größe 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:

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

Über uns Stefan

Polyglot Clean Code Developer

2 Kommentare

  1. 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. @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 🙁

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax