Dateiversion abfragen per Batch Datei
Hallo allerseits,
Kann man per Batch Datei (cmd) eine Dateiversion abfragen...?
So nach der Art "If exist.... goto END"
Sinn ist es, dass das Script nur ganz ablauft, wenn eine spez. Dateiversion (nicht Timestamp) vorhanden ist.
Irgendwie muss man doch die Dateiattribute abfragen können..?
Vielen Dank für Eure Hilfe
Gruss
JOML
Kann man per Batch Datei (cmd) eine Dateiversion abfragen...?
So nach der Art "If exist.... goto END"
Sinn ist es, dass das Script nur ganz ablauft, wenn eine spez. Dateiversion (nicht Timestamp) vorhanden ist.
Irgendwie muss man doch die Dateiattribute abfragen können..?
Vielen Dank für Eure Hilfe
Gruss
JOML
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 73372
Url: https://administrator.de/contentid/73372
Ausgedruckt am: 25.11.2024 um 07:11 Uhr
10 Kommentare
Neuester Kommentar
Hallo JOML2005!
Vielleicht hilft Dir ja dieser Beitrag: Versionsnummer von OCX per batch auslesen und drucken
Grüße
bastla
Vielleicht hilft Dir ja dieser Beitrag: Versionsnummer von OCX per batch auslesen und drucken
Grüße
bastla
Moin JOML,
magst Du uns denn mitteilen, welche Variante Du bis hierher verwendest?
Die meisten im Parallelthread haben doch gegen Ende eine Zeile
...oder ähnlich.
Wieso kannst Du nicht an dieser Stelle einbauen:
Bitte erläutere Dein Problem doch etwas genauer.
Danke
Biber
magst Du uns denn mitteilen, welche Variante Du bis hierher verwendest?
Die meisten im Parallelthread haben doch gegen Ende eine Zeile
...
if defined Version echo %~1 - Version %Version%
Wieso kannst Du nicht an dieser Stelle einbauen:
if defined Version if [%Version%]==[4.7.32.5] goto :uralteGurke
if defined Version if [%Version%]==[4.7.50.0] goto :neuerAlsMeine
Bitte erläutere Dein Problem doch etwas genauer.
Danke
Biber
Moin JOML,
dann nimm (falls Du mit der FileVer.exe arbeitest) folgende Zeile bzw zwei Zeilen im Batch:
a) CMD-Prompt
b) Batch
dann nimm (falls Du mit der FileVer.exe arbeitest) folgende Zeile bzw zwei Zeilen im Batch:
a) CMD-Prompt
for /f "tokens=2 delims== " %i in ('ftype^|find "Nero.exe"') do @for /f "tokens=5" %j in ('filever %~si /b') do @echo Set version=%j
Set version=6.6.0.16
..
for /f "tokens=2 delims== " %%i in ('ftype^|find "Nero.exe"') do set nero=%%~si
if defined nero for /f "tokens=5" %%j in ('filever %nero% /b') do Set version=%j
if defined version if [%version%] LEQ [6.3.3] goto :shitHappens
Moin JOML,
1. die FileVer.exe ist nicht automatisch mit auf dem Rechner - die lässt sich bei M$ herunterladen als Bestandteil eines ResKits. Aber ebenso geht bastlas Skriptvariante im o.a. Thread.
2. Nein, der Pfad wird implizit ermittelt. Probier es aus... wenn Nero installiert ist, bekommst Du ein gültiges Ergebnis. Evtl noch "Find /i" statt nur "find", aber nach meinen Tests ist IMMER eine "Nero.exe" mit dabei, die genau so geschrieben wird (großes "N", kleines "ero.exe").
3. Jepp.
Grüße
Biber
1. die FileVer.exe ist nicht automatisch mit auf dem Rechner - die lässt sich bei M$ herunterladen als Bestandteil eines ResKits. Aber ebenso geht bastlas Skriptvariante im o.a. Thread.
2. Nein, der Pfad wird implizit ermittelt. Probier es aus... wenn Nero installiert ist, bekommst Du ein gültiges Ergebnis. Evtl noch "Find /i" statt nur "find", aber nach meinen Tests ist IMMER eine "Nero.exe" mit dabei, die genau so geschrieben wird (großes "N", kleines "ero.exe").
3. Jepp.
Grüße
Biber
Moin JOML,
"Setlocal" bedeutet, dass alle Variablen, die während der Ausführung dieses Batches neu definiert werden (mit "Set var=bla")
nur lokal, nur solange der Batch läuft existiieren.
Und Dass Du so keine bereits vorhandenen unabsichtlich überschreiben kannst (z.B. %computername% oder %username%) und dass keine Variblen-Trümmer mehr rumliegen, wenn der Batch beendet ist.
Das Caret (^) "maskiert" Zeichen, die ansonsten im Batch als Steuerzeichen besondere Bedeutung hätten.
Sagt also quasi "Hey, wenn Du das nächste Zeichen liest, liebe CMD.exe, halt die Füße still, das soll dieses Mal nur ein ganz normaler Buchstabe sein. Nicht sofort losrennen.".
Ohne das Caret würden die beiden Befehle IN DER Klammer oben ausgeführt werden, bevor überhaupt die FOR-Anweisung selbst initialisiert ist.
Durch das Caret sage ich also:
- Mach mir eine FOR-Anweisung mit whatever in der Klammer
- diese FOR-Anweisung wird erstmal syntaktisch geprüft OHNE das Zeug in der Klammer
- dann wird das Zeug in der Klammer syntaktisch geprüft und ausgeführt und zwar von einer neuen CMD.exe-Instanz.
- die neue Instanz führt den Aufruf OHNE das Caret aus.
Grüße und danke für das nette Feedback
Biber
P.S. Habe oben den Code in gleichnamige Tags gesetzt.
Verbesserungsvorschlag:
del "%GetV%" ---> soll eigentlich immer gemacht werden. also VOR der Entscheidung richtige/falsche Version und somit auch vor "Goto :END" oder "geh einfach weiter".
Noch zwei Fragen:
Für was steht am Anfang "setlocal" (rechts von @echo off &)
Das Zeichen ^ hat welche Funktion..?
Für was steht am Anfang "setlocal" (rechts von @echo off &)
Das Zeichen ^ hat welche Funktion..?
"Setlocal" bedeutet, dass alle Variablen, die während der Ausführung dieses Batches neu definiert werden (mit "Set var=bla")
nur lokal, nur solange der Batch läuft existiieren.
Und Dass Du so keine bereits vorhandenen unabsichtlich überschreiben kannst (z.B. %computername% oder %username%) und dass keine Variblen-Trümmer mehr rumliegen, wenn der Batch beendet ist.
Das Caret (^) "maskiert" Zeichen, die ansonsten im Batch als Steuerzeichen besondere Bedeutung hätten.
Sagt also quasi "Hey, wenn Du das nächste Zeichen liest, liebe CMD.exe, halt die Füße still, das soll dieses Mal nur ein ganz normaler Buchstabe sein. Nicht sofort losrennen.".
Ohne das Caret würden die beiden Befehle IN DER Klammer oben ausgeführt werden, bevor überhaupt die FOR-Anweisung selbst initialisiert ist.
Durch das Caret sage ich also:
- Mach mir eine FOR-Anweisung mit whatever in der Klammer
- diese FOR-Anweisung wird erstmal syntaktisch geprüft OHNE das Zeug in der Klammer
- dann wird das Zeug in der Klammer syntaktisch geprüft und ausgeführt und zwar von einer neuen CMD.exe-Instanz.
- die neue Instanz führt den Aufruf OHNE das Caret aus.
Grüße und danke für das nette Feedback
Biber
P.S. Habe oben den Code in gleichnamige Tags gesetzt.
Verbesserungsvorschlag:
del "%GetV%" ---> soll eigentlich immer gemacht werden. also VOR der Entscheidung richtige/falsche Version und somit auch vor "Goto :END" oder "geh einfach weiter".