Betriebssystem-Version in eine Variable übernehmen
Hallo Zusammen,
ich möchte in einem Script abfragen, ob das Script auf einem XP-Client (Windows XP Professional) läuft.
Wenn nicht, dass soll das Script beendet werden. Die %OS% Variable kann ich nicht abfagen, da die ja nur
Windows_NT zurückliefert, auch wenn XP auf dem Client läuft.
Ich habe das Script wie folgt gebaut:
Es kommt die Anzeige:
D.h., es wird in der For-Schleife meine Variable nicht gesetzt. Könnt ihr mir einen Tipp geben warum?
Oder wie kann ich mein Problem sonst noch lösen? Die Variable windir kann ich nicht nutzen, da auf den Clients die
Windows-Verzeichnisse nicht Standard sind (Die Variable verweist ja standardmäßig bei Windows 2000 auf C:\WINNT und bei Windows XP auf C:\Windows, leider nicht bei mir)...
Grüße,
Flauschbobbel
ich möchte in einem Script abfragen, ob das Script auf einem XP-Client (Windows XP Professional) läuft.
Wenn nicht, dass soll das Script beendet werden. Die %OS% Variable kann ich nicht abfagen, da die ja nur
Windows_NT zurückliefert, auch wenn XP auf dem Client läuft.
Ich habe das Script wie folgt gebaut:
@echo off & setlocal
set OSXP=
:: zur Info
wmic path win32_operatingsystem get caption
for /f "tokens=2" %%i in ('wmic path win32_operatingsystem get caption^|FINDSTR "XP Professional"') do (
echo Client ist XP Professional-Rechner
set OSXP=True
echo %OSXP%
)
echo %OSXP%
if defined %OSXP% goto AAA
echo client ist kein XP-rechner
goto ende
:AAA
echo client ist xp-rechner
:ENDE
echo ende!
Es kommt die Anzeige:
Client ist XP Professional-Rechner
Echo ist ausgeschaltet (OFF).
True
client ist kein XP-rechner
ende!
D.h., es wird in der For-Schleife meine Variable nicht gesetzt. Könnt ihr mir einen Tipp geben warum?
Oder wie kann ich mein Problem sonst noch lösen? Die Variable windir kann ich nicht nutzen, da auf den Clients die
Windows-Verzeichnisse nicht Standard sind (Die Variable verweist ja standardmäßig bei Windows 2000 auf C:\WINNT und bei Windows XP auf C:\Windows, leider nicht bei mir)...
Grüße,
Flauschbobbel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 87011
Url: https://administrator.de/contentid/87011
Ausgedruckt am: 22.11.2024 um 16:11 Uhr
6 Kommentare
Neuester Kommentar
Moin Flauschbobbel,
das "ECHO is' EINgerastet" kommt von dieser Stelle:
Dieses ganze FOR-Gelumpe ist, auch wenn Du es ästhetisch und ordentlich ausgerichtet lesbar auf mehrere Zeilen verteilt hast (was sinnvoll ist!) für die CMD.exe EINE Anweisung.
Dementsprechend werden alle Variablen in dieser Zeile EINMAL aufgelöst, bevor die Ausführung losgeht.
(M$-Praktikanten sind ja nich' blöd... sondern effektiv.)
Abhilfe (die sinnvolle der drei möglichen): nach der FOR-Anweisungs-"ZEILE" prüfen.
Zum OS-Version-Ermitteln haben wir auch schon mal ein, zwei Tutorials zusammengeharkt in "Batch & Shell".
Grüße
Biber
das "ECHO is' EINgerastet" kommt von dieser Stelle:
FOR /F in ..sülzdibülz..... DO (
.....
set OSXP=True
echo %OSXP% ----> hier kommts her
)
echo %OSXP%
Dementsprechend werden alle Variablen in dieser Zeile EINMAL aufgelöst, bevor die Ausführung losgeht.
(M$-Praktikanten sind ja nich' blöd... sondern effektiv.)
Abhilfe (die sinnvolle der drei möglichen): nach der FOR-Anweisungs-"ZEILE" prüfen.
FOR /F in ..( ..) DO (
set OSXP=True
)
if defined OSXP echo [Debug] ...es ist ein XP
...
Zum OS-Version-Ermitteln haben wir auch schon mal ein, zwei Tutorials zusammengeharkt in "Batch & Shell".
Grüße
Biber
Versuchs mal so:
@echo off & setlocal
:: zur Info
wmic path win32_operatingsystem get caption
wmic path win32_operatingsystem get caption^|FINDSTR "XP Professional" && goto:AAA
echo client ist kein XP-rechner
goto ende
:AAA
echo Client ist XP Professional-Rechner
echo client ist xp-rechner
:ENDE
echo ende!
Hallo Flauschbobbel!
Lass das "^" vor dem "|" weg ...
... und verwende beim "findstr" zur Sicherheit den Schalter "/c" (sonst gibt sich noch ein "XP Home" als "Professional" aus).
Grüße
bastla
[Edit] @Biber: Eigentlich behauptest Du doch immer, ich würde rechts überholen ... [/Edit]
[Edit2] ... könntest Du beidseitig überholen ...
Eigentlich wäre anstelle von "überholen" schon eher "überrollen" angebracht ... wobei ich allerdings sehr sicherheitsbewusst und daher immer mit ausgefahrenem Airbag unterwegs bin ...
Im Übrigen sind mir "Gerüchte" relativ egal - was zählt, sind "Gerichte". [/Edit2]
Lass das "^" vor dem "|" weg ...
... und verwende beim "findstr" zur Sicherheit den Schalter "/c" (sonst gibt sich noch ein "XP Home" als "Professional" aus).
Grüße
bastla
[Edit] @Biber: Eigentlich behauptest Du doch immer, ich würde rechts überholen ... [/Edit]
[Edit2] ... könntest Du beidseitig überholen ...
Eigentlich wäre anstelle von "überholen" schon eher "überrollen" angebracht ... wobei ich allerdings sehr sicherheitsbewusst und daher immer mit ausgefahrenem Airbag unterwegs bin ...
Im Übrigen sind mir "Gerüchte" relativ egal - was zählt, sind "Gerichte". [/Edit2]
Moin Flauschbobbel,
a)
b) lass das Caret ("^") weg. In der Halbzeile ist nichts zu maskieren.
Grüße
Biber
[Edit] bastla hat wieder links überholt... *winkzzz* [/Edit]
[Edit2] ...Eigentlich behauptest Du doch immer, ich würde rechts überholen ...
na ja, es geht das Gerücht, seit Ende der Fastenzeit könntest Du beidseitig überholen... gleichzeitig... <ganzbreitgrinz>[/Edit2]
a)
Leider ### es nicht so richtig
Ihr sollt nicht immer ### sagen...Grüße
Biber
[Edit] bastla hat wieder links überholt... *winkzzz* [/Edit]
[Edit2] ...Eigentlich behauptest Du doch immer, ich würde rechts überholen ...
na ja, es geht das Gerücht, seit Ende der Fastenzeit könntest Du beidseitig überholen... gleichzeitig... <ganzbreitgrinz>[/Edit2]