Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Dateiversion abfragen per Batch Datei

Frage Entwicklung Batch & Shell

Mitglied: JOML

JOML (Level 1) - Jetzt verbinden

12.11.2007, aktualisiert 18.10.2012, 19581 Aufrufe, 10 Kommentare

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
Mitglied: bastla
12.11.2007, aktualisiert 18.10.2012
Hallo JOML2005!

Vielleicht hilft Dir ja dieser Beitrag: Versionsnummer von OCX per batch auslesen und drucken

Grüße
bastla
Bitte warten ..
Mitglied: JOML
13.11.2007 um 12:06 Uhr
Hallo bastla,

Ja und Nein... komme leider nicht weiter

Ich müsste das ganze noch in eine "IF" abfrage einbauen.

Das heisst zuerst erkennen der Version, danach "..wenn Version xy, dann gehe zu END.."

Ist das möglich...??

Vielen Dank für Deine Hilfe
PS: Das Script betreffend user passwörter zurücksetzten im AD funktioniert bestens..danke

Gruss
JOML
Bitte warten ..
Mitglied: Biber
13.11.2007 um 12:16 Uhr
Moin JOML,

magst Du uns denn mitteilen, welche Variante Du bis hierher verwendest?
Die meisten im Parallelthread haben doch gegen Ende eine Zeile
01.
... 
02.
if defined Version echo %~1 - Version %Version%
...oder ähnlich.

Wieso kannst Du nicht an dieser Stelle einbauen:
01.
if defined Version if [%Version%]==[4.7.32.5] goto :uralteGurke 
02.
if defined Version if [%Version%]==[4.7.50.0] goto :neuerAlsMeine
Bitte erläutere Dein Problem doch etwas genauer.

Danke
Biber
Bitte warten ..
Mitglied: JOML
13.11.2007, aktualisiert 18.10.2012
[http://www.administrator.de/forum/versionsnummer-von-ocx-per-batch-auslesen-und-drucken-55738.html
Versionsnummer von OCX per batch auslesen und
drucken]

Hallo Biber,

wollte es mit der obenstehenden Lösung versuchen.
Es geht darum:
Als erstes muss herausgefunden werden ob eine spez. SW Version (als Beispiel NERO 6.3.3.) installiert ist. Darum der check der Fileversion.
Wenn diese Version installiert ist, darf nichts mehr passieren.... das heisst also "goto END".
Ist aber eine andere Version installiert, soll die Batchdatei bis zum Schluss durchlaufen.

So hatte ich mir das in etwa vorgestellt..

Die Batchdatei besteht schon.. jetzt muss ich nur noch den Teil mit der Fileversion und dem "IF" irgendwie hinbekommen...

Vielen Dank

Gruss
JOML
Bitte warten ..
Mitglied: Biber
13.11.2007 um 13:22 Uhr
Moin JOML,

dann nimm (falls Du mit der FileVer.exe arbeitest) folgende Zeile bzw zwei Zeilen im Batch:
a) CMD-Prompt
01.
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 
02.
Set version=6.6.0.16
b) Batch
01.
.. 
02.
for /f "tokens=2 delims== " %%i in ('ftype^|find "Nero.exe"') do set nero=%%~si 
03.
if defined nero for /f "tokens=5" %%j in ('filever %nero% /b') do Set version=%j 
04.
if defined version if [%version%] LEQ [6.3.3] goto :shitHappens
Bitte warten ..
Mitglied: JOML
13.11.2007 um 14:45 Uhr
b) Batch
01.
.. 
02.
> for /f "tokens=2 delims== " %%i in 
03.
> ('ftype^|find 
04.
> "Nero.exe"') do set 
05.
> nero=%%~si 
06.
> if defined nero for /f "tokens=5" 
07.
> %%j in ('filever %nero% /b') do Set 
08.
> version=%j 
09.
> if defined version if [%version%] LEQ 
10.
> [6.3.3] goto :shitHappens 
11.
> 

Hallo Biber,

Vielen Dank.

Da ich das Tool "FileVer.exe" noch nicht kenne, habe ich leider noch Fragen.
1. Muss ich das Tool noch in der Batchdatei irgendwie aufrufen..? Oder wie wird erkannt ob das Tool da ist oder nicht..?
2. Muss kein Pfad zur Nero.exe angegeben werden..? z.B c:\program files\Nero\Nero.exe
3. [6.3.3] goto > Gebe ich hier ein, welche version da sein sollte..?

Sorry für die vielen Fragen.. bin leider noch nicht so ein Crack in Sachen Batch etc.

Danke nochmals für Eure Hilfe.

Gruss
JOML
Bitte warten ..
Mitglied: Biber
13.11.2007 um 15:01 Uhr
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
Bitte warten ..
Mitglied: JOML
13.11.2007 um 17:01 Uhr
Hallo zusammen,

Habs jetzt die Variante genommen:
01.
set "Datei=C:\Progra~1\Muster\muster.exe" 
02.
set "GetV=%Temp%\GetV.vbs"  
03.
echo Set  objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")>"%GetV%" 
04.
echo Set colFiles=objWMIService.ExecQuery ("SELECT * FROM CIM_Datafile WHERE  Name='"^&Replace(WScript.Arguments(0),"\","\\")^&"'")>>"%GetV%" echo For Each objFile in colFiles: WScript.Echo objFile.Version: Next>>"%GetV%" 
05.
set Version= 
06.
for /f %%i in ('cscript //nologo "%GetV%" "%Datei%"') do set "Version=%%i" 
07.
if defined Version echo %Datei% - Version %Version% 
08.
if defined Version if [%Version%]==[15.1.6.65] goto :END 
09.
del "%GetV%"
Und es scheint zu funktionieren.. oder sieht da noch jemand ein Fehler im Script ?
Nachtrag: Es funktioniert BESTENS !!

Noch zwei Fragen:
Für was steht am Anfang "setlocal" (rechts von @echo off &)
Das Zeichen ^ hat welche Funktion..?

Vielen vielen Dank an alle.
Absolut geniale Hilfe hier im Forum.

Gruss
JOML
Bitte warten ..
Mitglied: Biber
13.11.2007 um 18:50 Uhr
Moin JOML,

Noch zwei Fragen:
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".
Bitte warten ..
Mitglied: JOML
13.11.2007 um 18:59 Uhr
Alles klar.. danke für die Info

Gruss
JOML
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Ä in batch Datei (12)

Frage von BergEnte zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...