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