onri
Goto Top

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

Content-ID: 54328

Url: https://administrator.de/contentid/54328

Ausgedruckt am: 23.11.2024 um 12:11 Uhr

36539
36539 17.03.2007 um 23:58:37 Uhr
Goto Top
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
Onri
Onri 18.03.2007 um 00:34:43 Uhr
Goto Top
Hi,

danke für die Info.

Ich bräuchte aber eine genauere Erkennung.

Falls jemand eine Spanische Installation hat, wie bekomme ich das mit?

Aus diesem Grund würde ich gerne auf einen CountryCode zurückgreifen wollen, in dem ich je nach Code verzweige.

Vielen Dank
Onri
36539
36539 18.03.2007 um 00:51:20 Uhr
Goto Top
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
bastla
bastla 18.03.2007, aktualisiert am 18.10.2012 um 18:31:45 Uhr
Goto Top
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
Onri
Onri 19.03.2007 um 19:25:00 Uhr
Goto Top
Hi Bastla,

vielen Dank für die Information. Das ist genau das, was ich gesucht habe.

Einen Dank auch an alle anderen die mitgeholfen haben.

bis denne
Onri
TomTomBon
TomTomBon 16.10.2009 um 17:34:14 Uhr
Goto Top
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":

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%
bastla
bastla 16.10.2009 um 19:39:29 Uhr
Goto Top
... und wer trotzdem mit Batch auskommen will (und - wegen der benötigten "wmic.exe" - zumindest XP verwendet) könnte es so versuchen:
@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%
Auch in dieser Variante stehen als Ergebnis CountryCode, Locale, OSLanguage und Codeset als Variable zur Verfügung.

Grüße
bastla
36539
36539 17.10.2009 um 10:08:46 Uhr
Goto Top
Und ich mach es inzw. so.

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
Aufrufen in einer Batch:
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"  
anschließend Ausgabe der Variablen über echo-Befehl.
bastla
bastla 17.10.2009 um 10:23:16 Uhr
Goto Top
Hallo onegasee59!

Da sollte ja inzwischen für jeden etwas dabei sein ... face-wink

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
genügen.

Grüße
bastla
36539
36539 17.10.2009 um 11:24:42 Uhr
Goto Top
Hallo bastla,

passt - Klasse - Danke. face-smile

schönes Wochenende
onegasee59
TomTomBon
TomTomBon 20.10.2009 um 11:47:15 Uhr
Goto Top
Ist doch schön wenn man so einen Fundus kriegt.

Deswegen habe ich ja meine Lösung für alle die suchen (wenn sie suchen...) hier gepostet
face-wink