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

64Bit Versionen verschiedener Windows-Distributionen per Batch erkennen

Frage Entwicklung Batch & Shell

Mitglied: zensbert

zensbert (Level 1) - Jetzt verbinden

22.12.2009 um 22:37 Uhr, 11901 Aufrufe, 6 Kommentare

Hi,
Ich hab ein bischen gegoogelt, aber so eine richtig zufriedenstellende Lösung habe ich noch nicht.. Ich müsste per Batch erkennen können ob es eine 64Bit Version ist oder nicht und das leider in allen OS von XP bis 7. Die WMIC fällt flach da die auf den verschiedensten Versionen z.B. Vista Home nicht dabei ist und es auch nicht mit wmic rüberkopieren getan ist. Bevor ich mir hier 3 virtuelle Maschinen installiere frage ich mal lieber hier ob jemand schon den passenden Schnipsel in seinem Fundus hat, der mir da helfen kann. Ist es da am besten per systeminfo.exe auszulesen? OS lese ich per Registry aus und setze es in %BS%..

also als Beispiel:
01.
set os64=0 
02.
(set bs=xp) 
03.
if %bs% == XP (Echo Windows XP erkannt) 
04.
if %bs% == XP (64 Bit-Prüfung, wenn ja set os64=1) 
05.
if %bs% == Vista (Echo Windows Vista erkannt) 
06.
if %bs% == Vista (64 Bit-Prüfung, wenn ja set os64=1) 
07.
if %bs% == 7 (Echo Windows 7 erkannt) 
08.
if %bs% == 7 (64 Bit-Prüfung, wenn ja set os64=1) 
09.
if %os64% == 1 (goto 64error)
Wenn ihr ein kleines CMD-Hilfestellungstool kennt oder sonst was immer her damit.. wäre auch kein problem- hauptsache kompatibel von XP bis Seven^^

Danke im Voraus..

Thomas
Mitglied: rubberman
23.12.2009 um 00:16 Uhr
Hallo chizophren.

Hier: Getosversion.vbs - Betriebssystem sowie die Versionsnummer per Script bestimmen
findest du einiges darüber.

Die Environmentvariable %OS%
sowie die Befehle VER und NET CONFIG WORKSTATION
geben dir wertvolle Aufschlüsse.

Das VBScript aus dem verlinkten Beitrag mal in abgewandelter Form im Batch verwurstet sähe etwa so aus:
01.
@echo off & setlocal 
02.
set "vbstool=%temp%\GetOsInfo.vbs" 
03.
>"%vbstool%" echo Set colOperatingSystems = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2").ExecQuery("Select * from Win32_OperatingSystem") 
04.
>>"%vbstool%" echo For Each objOperatingSystem in colOperatingSystems 
05.
>>"%vbstool%" echo Wscript.Echo objOperatingSystem.Caption ^& ":" ^& objOperatingSystem.Version ^& ":" ^& objOperatingSystem.ServicePackMajorVersion ^& "." ^& objOperatingSystem.ServicePackMinorVersion 
06.
>>"%vbstool%" echo Next 
07.
 
08.
for /f "delims=: tokens=1-3" %%a in ('cscript //nologo "%vbstool%"') do ( 
09.
  echo Name: %%a 
10.
  echo Version: %%b 
11.
  echo SevicePack: %%c 
12.
13.
 
14.
del "%vbstool%" 
15.
pause
Wie/an welcher Stelle genau sich allerdings eine 32bit von einer 64bit - Version unterscheidet, weiß ich nicht. Vielleicht hast du Möglichkeiten das auszutesten.

Grüße
rubberman

<edit>
Mit den Versionsnummern sollte das OS recht eindeutig zu identifizieren sein. Hier eine Liste:
www.gaijin.at/lstwinver.php
Das Problem, ob nun 32 oder 64bit, scheint sich damit aber noch nicht klären zu lassen.
</edit>
Bitte warten ..
Mitglied: Mad-Eye
23.12.2009 um 09:41 Uhr
Hi,

also am einfachsten ist es meines wissens zu prüfen ob der Ordner "Program Files (x86)" vorhanden ist. Dieser ist jedenfalls bei XP64, Vista und 7 immer da getestet bei englischer und deutscher Installation.

Gruß
Mad-Eye
Bitte warten ..
Mitglied: DerWoWusste
23.12.2009 um 14:55 Uhr
Es gibt da eine Variable...
PROCESSOR_ARCHITECTURE
Bitte warten ..
Mitglied: rubberman
23.12.2009 um 16:58 Uhr
@DerWoWusste

Stimmt. Hat auf meiner 32bit Büchse den Wert x86. Wie sieht das auf einem 64bit System aus?

Grüße
rubberman

<edit>
Batch - Betriebssysteminformationen abfragen (auch ohne WSH) - NT, 200x, XP, Vista, ... - Name ink. Typ (Server, Home, etc.), Version, Product Suite (Terminal Server, etc.), Sprache und Windows Service Pack, 32 oder 64 Bit
In dem Beitrag werden wohl alle offenen Fragen beantwortet. Unter anderem auch, dass x86 für das 32bit System steht.
</edit>
Bitte warten ..
Mitglied: zensbert
27.12.2009 um 10:13 Uhr
danke an alle fleißigen schreiberlinge.. war nur die letzten tage weihnachtsabstinent.. die prozessur architektur muss ja nicht zwangsweise mit dem OS übereinstimmen. Hab auch ein 64Bit Prozi und nur 32bit laufen...

habe das jetzt so gelöst:

01.
for /f "tokens=1,*" %%i in ('%windir%\system32\Systeminfo^|find "Systemtyp"') do set "Bitver=%%j" 
02.
echo %Bitver%|findstr "86">nul && echo 32Bit 
03.
echo %Bitver%|findstr "64">nul && echo 64Bit
eine deutsche systeminfo.exe vorausgesetzt sollte die erkennung funktionieren.

Muss das noch auf ein paar Systemen austesten aber denke doch dass das klappen wird.. ansonsten gehe ich nach der "Program Files (x86)" Ordnerstruktur.

Guten Rutsch an alle..

Gruß Thomas
Bitte warten ..
Mitglied: DerWoWusste
29.12.2009 um 16:46 Uhr
Hi.
die prozessur architektur muss ja nicht zwangsweise mit dem OS übereinstimmen
Doch. Schau Dir mal die Definition der Variable im Netz an, es geht nicht um den Prozessor, sondern um das OS. Zugegebenermaßen irreführend.
Hab auch ein 64Bit Prozi und nur 32bit laufen...
Und, welchen Wert hat die Variable? x86.
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
gelöst Windows Update Dienst per Batch beenden (12)

Frage von Justin98 zum Thema Batch & Shell ...

Datenschutz
AtomBombing: Zero-Day-Lücke bedroht alle Windows-Versionen (4)

Link von AnkhMorpork zum Thema Datenschutz ...

Viren und Trojaner
DXXD-Ransomware atackiert Windows Server in allen Versionen (6)

Tipp von the-buccaneer zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (10)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...