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-Key: 254641

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

Printed on: April 24, 2024 at 18:04 o'clock

Member: Dani
Dani Nov 12, 2014 at 20:48:13 (UTC)
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
Member: rubberman
rubberman Nov 12, 2014 at 23:52:38 (UTC)
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
Member: ITvortex
ITvortex Nov 13, 2014 updated at 07:51:54 (UTC)
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
Member: laster
laster Nov 13, 2014 at 08:50:48 (UTC)
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
Member: Endoro
Endoro Nov 14, 2014 at 09:32:09 (UTC)
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
Member: Jens4ever
Jens4ever Nov 14, 2014 at 15:13:01 (UTC)
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
Member: Dani
Dani Nov 14, 2014 at 22:41:53 (UTC)
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
Member: Jens4ever
Jens4ever Nov 14, 2014 at 22:47:41 (UTC)
Goto Top
Jo! Java.exe z.B.

Vielen Dank schon mal Dani.
Member: Dani
Dani Nov 14, 2014 updated at 23:26:16 (UTC)
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