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-Key: 54328

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

Printed on: April 29, 2024 at 14:04 o'clock

Mitglied: 36539
36539 Mar 17, 2007 at 22:58:37 (UTC)
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
Member: Onri
Onri Mar 17, 2007 at 23:34:43 (UTC)
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
Mitglied: 36539
36539 Mar 17, 2007 at 23:51:20 (UTC)
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
Member: bastla
bastla Mar 18, 2007, updated at Oct 18, 2012 at 16:31:45 (UTC)
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
Member: Onri
Onri Mar 19, 2007 at 18:25:00 (UTC)
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
Member: TomTomBon
TomTomBon Oct 16, 2009 at 15:34:14 (UTC)
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%
Member: bastla
bastla Oct 16, 2009 at 17:39:29 (UTC)
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
Mitglied: 36539
36539 Oct 17, 2009 at 08:08:46 (UTC)
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.
Member: bastla
bastla Oct 17, 2009 at 08:23:16 (UTC)
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
Mitglied: 36539
36539 Oct 17, 2009 at 09:24:42 (UTC)
Goto Top
Hallo bastla,

passt - Klasse - Danke. face-smile

schönes Wochenende
onegasee59
Member: TomTomBon
TomTomBon Oct 20, 2009 at 09:47:15 (UTC)
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