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

Betriebssystem-Version in eine Variable übernehmen

Frage Entwicklung Batch & Shell

Mitglied: Flauschbobbel

Flauschbobbel (Level 1) - Jetzt verbinden

05.05.2008, aktualisiert 22:05 Uhr, 7950 Aufrufe, 6 Kommentare

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:

01.
@echo off & setlocal 
02.
set OSXP= 
03.
 
04.
:: zur Info 
05.
wmic path win32_operatingsystem get caption 
06.
 
07.
for /f "tokens=2" %%i in ('wmic path win32_operatingsystem get caption^|FINDSTR "XP Professional"') do ( 
08.
	echo Client ist XP Professional-Rechner 
09.
	set OSXP=True 
10.
	echo %OSXP% 
11.
12.
 
13.
echo %OSXP% 
14.
if defined %OSXP% goto AAA 
15.
echo client ist kein XP-rechner 
16.
goto ende 
17.
 
18.
:AAA 
19.
echo client ist xp-rechner 
20.
 
21.
:ENDE 
22.
echo ende!
Es kommt die Anzeige:
01.
Client ist XP Professional-Rechner 
02.
Echo ist ausgeschaltet (OFF). 
03.
True 
04.
client ist kein XP-rechner 
05.
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
Mitglied: Biber
05.05.2008 um 20:49 Uhr
Moin Flauschbobbel,

das "ECHO is' EINgerastet" kommt von dieser Stelle:
01.
 FOR /F in  ..sülzdibülz..... DO ( 
02.
..... 
03.
	set OSXP=True 
04.
	echo %OSXP%           ----> hier kommts her 
05.
06.
echo %OSXP%
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.
01.
 FOR /F in ..( ..) DO ( 
02.
	set OSXP=True 
03.
04.
if defined OSXP echo [Debug] ...es ist ein XP 
05.
...
Zum OS-Version-Ermitteln haben wir auch schon mal ein, zwei Tutorials zusammengeharkt in "Batch & Shell".

Grüße
Biber
Bitte warten ..
Mitglied: miniversum
05.05.2008 um 20:58 Uhr
Versuchs mal so:
01.
@echo off & setlocal 
02.
:: zur Info 
03.
wmic path win32_operatingsystem get caption 
04.
 
05.
wmic path win32_operatingsystem get caption^|FINDSTR "XP Professional" && goto:AAA 
06.
 
07.
echo client ist kein XP-rechner 
08.
goto ende 
09.
 
10.
:AAA 
11.
echo Client ist XP Professional-Rechner 
12.
echo client ist xp-rechner 
13.
 
14.
:ENDE 
15.
echo ende!
Bitte warten ..
Mitglied: Flauschbobbel
05.05.2008 um 21:30 Uhr
Hallo miniversum,

danke für den Tip. Leider geht es nicht so richtig...

Das ist der Output:

Caption
Microsoft Windows XP Professional

Ungültiger GET-Ausdruck.
client ist kein XP-rechner
ende!

Grüße,
Flauschbobbel
Bitte warten ..
Mitglied: bastla
05.05.2008 um 21:45 Uhr
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]
Bitte warten ..
Mitglied: Biber
05.05.2008 um 21:46 Uhr
Moin Flauschbobbel,

a)
Leider ### es nicht so richtig
Ihr sollt nicht immer ### sagen...
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]
Bitte warten ..
Mitglied: Flauschbobbel
05.05.2008 um 22:05 Uhr
Hallo bastla, biber,

vielen herzlichen Dank! Es funktioniert.

@Biber:
Ich gelobe Besserung und werde ### nicht mehr schreiben. Leider ist es mir in einer anderen Beitrag zwischenzeitlich wieder "herausgerutscht"... Tschuldigung!

Grüße,
Flauschbobbel
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Router & Routing
Welche pfsense Version für Dual-Wan Router mit APU2C4 installieren (5)

Frage von Roland30 zum Thema Router & Routing ...

JavaScript
AngularJS Variable über Input in Funktion ausführen

Frage von badkilla zum Thema JavaScript ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von Markus5579 zum Thema Batch & Shell ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (16)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...