Landessprache über CMD Script abfragen
Hallo,
kennt jemand eine Möglichkeit über ein CMD Script die eingestellte Landessprache bzw. die installierte Landesversion (ENG / DEU usw.) auf dem Windows Client abzufragen?
Für eure Mühe bedanke ich mich im vorraus.
bis denne
Onri
kennt jemand eine Möglichkeit über ein CMD Script die eingestellte Landessprache bzw. die installierte Landesversion (ENG / DEU usw.) auf dem Windows Client abzufragen?
Für eure Mühe bedanke ich mich im vorraus.
bis denne
Onri
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 54328
Url: https://administrator.de/contentid/54328
Ausgedruckt am: 23.11.2024 um 12:11 Uhr
11 Kommentare
Neuester Kommentar
sehr schwierig, wenn es 100% eindeutig sein soll.
dazu schau dir das mal an http://www.microsoft.com/globaldev/handson/dev/newapis.mspx#EIAA
ansonsten
über "winver.exe" in %systemroot%\system32\ findet man über die rechte Maustaste unter Eigenschaften die Sprache. Per vb-script kann man das sicher auslesen, per Batch wüsste ich nichts.
oder
du machst es über Unterscheidung der Begriffe "Datei" und "Files"
dir \ | find "Datei(en)" > nul
if errorlevel 0 set sprache=deutsch
dir \ | find "File(s)" > nul
if errorlevel 0 set sprache=englisch
onegasee59
dazu schau dir das mal an http://www.microsoft.com/globaldev/handson/dev/newapis.mspx#EIAA
ansonsten
über "winver.exe" in %systemroot%\system32\ findet man über die rechte Maustaste unter Eigenschaften die Sprache. Per vb-script kann man das sicher auslesen, per Batch wüsste ich nichts.
oder
du machst es über Unterscheidung der Begriffe "Datei" und "Files"
dir \ | find "Datei(en)" > nul
if errorlevel 0 set sprache=deutsch
dir \ | find "File(s)" > nul
if errorlevel 0 set sprache=englisch
onegasee59
Aus diesem Grund würde ich gerne auf einen CountryCode zurückgreifen wollen, in dem ich je nach Code verzweige.
Also wie gesagt über Batch das rauszubekommen scheint mir nicht möglich. Einen Reg-Key weiß ich nicht.
lies mal http://directorworkshop.de/data/workshop/getlanguage.html
hth
onegasee59
Hallo Onri!
Wirf mal einen Blick auf eines von Biber's (allesamt) empfehlenswerten Tutorials, wo er sich (am Rande) mit dieser Thematik befasst hat: Workshop Batch for Runaways Part III Datums- und Zeitvariablen im Batch
Vielleicht helfen Dir ja die Ländereinstellungen ...
Grüße
bastla
Wirf mal einen Blick auf eines von Biber's (allesamt) empfehlenswerten Tutorials, wo er sich (am Rande) mit dieser Thematik befasst hat: Workshop Batch for Runaways Part III Datums- und Zeitvariablen im Batch
Vielleicht helfen Dir ja die Ländereinstellungen ...
Grüße
bastla
Moin,
ich weiß das hier zu ist, aber für die die vielleicht eine bessere Lösung suchen.
Hier ist unsere:
1. eine VBS, "code.vbs":
Dieses wird in einer cmd abgerufen mit:
Ausgabe efolgt über 1031 für GER zB mit der variable %oslanguage%
ich weiß das hier zu ist, aber für die die vielleicht eine bessere Lösung suchen.
Hier ist unsere:
1. eine VBS, "code.vbs":
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem")
For Each objItem In colItems
WScript.Echo "CountryCode: " & objItem.CountryCode
WScript.Echo "Locale: " & objItem.Locale
WScript.Echo "OSLanguage: " & objItem.OSLanguage
WScript.Echo "CodeSet: " & objItem.CodeSet
set WshShell = CreateObject("WScript.Shell")
set oEnv=WshShell.Environment("Process")
'//1 User Type
set oEnv=WshShell.Environment("Volatile")
for each sitem in oEnv
strval=strval & sItem &vbcrlf
next
strval=""
wscript.echo "Adding ( CountryCode) to User " _
& "type environment"
' add a var
oEnv("CountryCode") = objItem.CountryCode
'//2 User Type
set oEnv=WshShell.Environment("Volatile")
for each sitem in oEnv
strval=strval & sItem &vbcrlf
next
strval=""
wscript.echo "Adding ( Locale) to User " _
& "type environment"
' add a var
oEnv("Locale") = objItem.Locale
'//3 User Type
set oEnv=WshShell.Environment("Volatile")
for each sitem in oEnv
strval=strval & sItem &vbcrlf
next
strval=""
wscript.echo "Adding ( OSLanguage) to User " _
& "type environment"
' add a var
oEnv("OSLanguage") = objItem.OSLanguage
'//4 User Type
set oEnv=WshShell.Environment("Volatile")
for each sitem in oEnv
strval=strval & sItem &vbcrlf
next
strval=""
wscript.echo "Adding ( CodeSet) to User " _
& "type environment"
' add a var
oEnv("CodeSet") = objItem.CodeSet
Dim fso, datei
Set fso = CreateObject("Scripting.FileSystemObject")
Set datei = fso.CreateTextFile("codepage.bat")
datei.writeline ("SET CountryCode=") _
& objItem.CountryCode
datei.writeline ("SET Locale=") _
& objItem.Locale
datei.writeline ("SET OSLanguage=") _
& objItem.OSLanguage
datei.writeline ("SET CodeSet=") _
& objItem.CodeSet
datei.close
Next
Dieses wird in einer cmd abgerufen mit:
:: Check Language
cscript code.vbs
call codepage.bat
Ausgabe efolgt über 1031 für GER zB mit der variable %oslanguage%
... und wer trotzdem mit Batch auskommen will (und - wegen der benötigten "wmic.exe" - zumindest XP verwendet) könnte es so versuchen:
Auch in dieser Variante stehen als Ergebnis CountryCode, Locale, OSLanguage und Codeset als Variable zur Verfügung.
Grüße
bastla
@echo off
wmic os get CountryCode,Locale,OSLanguage,Codeset /value>%temp%\CInfo.txt
for /f "delims=" %%i in ('type %temp%\CInfo.txt') do set "%%i"
del %temp%\CInfo.txt
echo %OSLanguage%
Grüße
bastla
Und ich mach es inzw. so.
osfind.vbs
Aufrufen in einer Batch:
anschließend Ausgabe der Variablen über echo-Befehl.
osfind.vbs
strComputer = "."
s = ""
Set objWMIService = GetObject ("winmgmts:\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
s = objOperatingSystem.Caption & "#SP " & objOperatingSystem.ServicePackMajorVersion & "#Build-Nr: " & objOperatingSystem.Version & "#"
Next
strComputer = "."
Set objWMIService = GetObject ("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery ("Select * FROM Win32_OperatingSystem")
For Each objItem In colItems
if objItem.OSLanguage = 9 then s = s & "ENG"
if objItem.OSLanguage = 1031 then s = s & "DE"
if objItem.OSLanguage = 1033 then s = s & "ENG"
Next
Wscript.Echo s
for /f "tokens=1,2,3,4 delims=#" %%a in ('cscript //nologo "%startpfad%osfind.vbs"') do set "winvers=%%a" & set "winsp=%%b" & set "winbuild=%%c" & set "winlang=%%d"
Hallo onegasee59!
Da sollte ja inzwischen für jeden etwas dabei sein ...
Wenn Du übrigens aus Deinem Script ein paar Redundanzen eliminierst, könnte auch
genügen.
Grüße
bastla
Da sollte ja inzwischen für jeden etwas dabei sein ...
Wenn Du übrigens aus Deinem Script ein paar Redundanzen eliminierst, könnte auch
Set colOperatingSystems = GetObject ("winmgmts:\\.\root\cimv2").ExecQuery ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
s = objOperatingSystem.Caption & "#SP " & objOperatingSystem.ServicePackMajorVersion & "#Build-Nr: " & objOperatingSystem.Version & "#"
if objOperatingSystem.OSLanguage = 9 then s = s & "ENG"
if objOperatingSystem.OSLanguage = 1031 then s = s & "DE"
if objOperatingSystem.OSLanguage = 1033 then s = s & "ENG"
Next
WScript.Echo s
Grüße
bastla
Hallo bastla,
passt - Klasse - Danke.
schönes Wochenende
onegasee59
passt - Klasse - Danke.
schönes Wochenende
onegasee59