jens4ever
Goto Top

Dateiversionen mit Skript vergleichen und wenn Datei neuer ist, installieren

Moin zusammen,

ich bräuchte mal eure Hilfe bitte.

Könnte ihr mir helfen, das zu realisieren als Skript? Am liebsten als Batch. Wenn das nicht geht, als VBS oder PS1.

Check Version von D:\Download\Tool.exe
Wenn Versionsnummer < als C:\Program Files\Tool\Tool.exe
GOTO :Ende
D:\Download\Tool.exe /silent
:Ende


Das Skript soll also 2 Dateiversionen vergleichen und wenn die eine Datei neuer ist (die auf Dface-smile dann soll sie installiert werden. Alternativ würde auch ein portable Programm gehen, mit dem ich das abrufen und vergleichen kann.


Danke vorab für eure tolle Unterstützung.
Jens!

Content-ID: 254641

Url: https://administrator.de/contentid/254641

Ausgedruckt am: 26.11.2024 um 15:11 Uhr

Dani
Dani 12.11.2014 um 21:48:13 Uhr
Goto Top
Moin Jens,
geht es wirklich um ausführbare Dateien, die nicht auf dem Rechner installiert sind? Falls nicht, ist die Registry der erste Anlaufpunkt.
Aus der Hüfte heraus würde ich es mit Powershell so versuchen:
[System.Diagnostics.FileVersionInfo]::GetVersionInfo("C:\Temp\tool.exe").FileVersion  

Am liebsten als Batch.
Verabschiede dich davon... die Zukunft ist Powershell. War in den letzten Tagen bei Microsoft und die cmd.exe soll schnellst möglich verschwinden.


Gruß,
Dani
rubberman
rubberman 13.11.2014 um 00:52:38 Uhr
Goto Top
Hallo Jens,

diese Fragen kommen immer wieder. Mit Batch pur ist das nicht zu machen, aber schau mal dort vorbei.

@Dani
Zitat von @Dani:

War in den letzten Tagen bei Microsoft und die cmd.exe soll schnellst möglich verschwinden.
Tot gesagte leben länger face-wink Das ist seit Jahren immer mal wieder im Gespräch und (vermutlich aus Kompatibilitätsgründen und weil all die 3rd Party Konsoleprogramme irgendwo ausgeführt werden wollen) konnte man sich nie dazu entschließen. Ist auch völlig Wurscht ob die paar kB nun noch zusätzlich auf der Platte liegen oder nicht. Ich bin gespannt... face-smile

Grüße
rubberman
ITvortex
ITvortex 13.11.2014 aktualisiert um 08:51:54 Uhr
Goto Top
Zitat von @Dani:

Moin Jens,
geht es wirklich um ausführbare Dateien, die nicht auf dem Rechner installiert sind? Falls nicht, ist die Registry der erste
Anlaufpunkt.
Aus der Hüfte heraus würde ich es mit Powershell so versuchen:
> [System.Diagnostics.FileVersionInfo]::GetVersionInfo("C:\Temp\tool.exe").FileVersion  
> 

> Am liebsten als Batch.
Verabschiede dich davon... die Zukunft ist Powershell. War in den letzten Tagen bei Microsoft und die cmd.exe soll schnellst
möglich verschwinden.


Gruß,
Dani

Ich war gestern auch dort, und außer Powershell wird nicht mehr viel verwendet. Sei es zur Migration von Exchange auf office365 oder auch für simple Skripte. Man muss sich halt ein wenig umgewöhnen, und Powershell kann sowieso alles was die cmd.exe auch kann. So... face-smile
laster
laster 13.11.2014 um 09:50:48 Uhr
Goto Top
Hallo Jens,

eine Möglichkeit ist auch psinfo aus den sysinternals (von Microsoft):
psinfo -s | find "VNC Free"  
Geht aber auch nur, wenn das Programm in der Reg eingetragen ist.
Ansonsten kannst Du per md5sum zumindest erkennen, ob das Programm identisch ist (aber das reicht Dir ja nicht).

vG
LS
Endoro
Endoro 14.11.2014 um 10:32:09 Uhr
Goto Top
Hey,
das hab ich hier schon mal beantwortet.

Ich glaub nicht, dass Batch so bald abgeschafft wird. Zum Beispiel nutzen viele Installer das noch. Vielleicht wird es nicht mehr standardmässig installiert. Aber auch dann wird M$ viele Supportanrufe bekommen face-smile
Gruß, Endoro
Jens4ever
Jens4ever 14.11.2014 um 16:13:01 Uhr
Goto Top
Moin!

Erst mal danke für die zahlreichen Wortmeldungen.

PowerShell scheint mir auch der richtige Weg hier zu sein, Dani. Ich habe zwar auch code gefunden, der vergleicht, es gelang mir jedoch nicht beiden zu kombinieren. Auch ein PS onlinekurs hat nüscht genützt ;)

Könntest du mir vielleicht die beiden Zeilen schreiben? face-smile

Schönes WE
Jens
Dani
Dani 14.11.2014 um 23:41:53 Uhr
Goto Top
Moin,
Könntest du mir vielleicht die beiden Zeilen schreiben?
Machbar, dazu sollte ich wissen um welches Tool/Programm es geht...


Gruß,
Dani
Jens4ever
Jens4ever 14.11.2014 um 23:47:41 Uhr
Goto Top
Jo! Java.exe z.B.

Vielen Dank schon mal Dani.
Dani
Dani 15.11.2014 aktualisiert um 00:26:16 Uhr
Goto Top
Anbei die erste Version aus der Hüfte geschossen:
<#
Author:   Dani
Erstellt: 14.11.2014
Aufgabe:  Versionsnummer zweier EXE-Dateien auslesen und vergleichen
#>

[string] $strSourceApp = "U:\Programme\Oracle\Jave JRE\jre-7u65-windows-x64.exe"  
[string] $strDestApp = "U:\Programme\Oracle\Jave JRE\jre-7u67-windows-x64.exe"  


if ($strSourceApp -ne "") {  
    [array] $strSourceAppVer = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("$strSourceApp").FileVersion.Split(" ")  
    Write-host "Bestehende Version: $strSourceAppVer"  

    if ($strDestApp -ne "") {  
    [array] $strDestAppVer = [System.Diagnostics.FileVersionInfo]::GetVersionInfo("$strDestApp").FileVersion.Split(" ")  
        Write-host "Vergleichsversion: $strDestAppVer"  

        if($strSourceAppVer -lt $strDestAppVer) { Write-Host "Neue Version vorhanden." }  
        else { write-host "Keine neue Version gefunden!" }  
    }
    else { write-host "Datei nicht gefunden!" }  
}
else { write-host "Datei nicht gefunden!" }  
Bitte daran denken, den Pfad zur Soruce und Destinationanwendung anzupassen.


Gruß,
Dani