Jump to content

Script Sprachabfrage funktioniert nicht auf Server 2003/2008


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo zusammen

 

Habe ein anmeldescript geschrieben welches zuerst die Sprache des Betriebssystem prüft um dann Netzlaufwerke zu verbinden.

Nun funktioniert das ganze auf XP Rechnern jedoch nicht auf 2003/2008 Server und mir ist nicht klar weshalb.

 

Hier mein Script:

 

for /F %%i in ('wmic os get countrycode') do set countrycode=%%i

 

IF %countrycode% == 41 GOTO EN

IF %countrycode% == 49 GOTO DE

 

GOTO ENDE

 

:EN

echo englisch

GOTO ENDE

 

:DE

echo deutsch

GOTO ENDE

 

:ENDE

echo ende

 

Aufm Server bekomm ich folgende Ausgabe (2003&2008):

 

c:\Install>for /F %i in ('wmic os get countrycode') do set countrycode=%i

 

c:\Install>set countrycode=CountryCode

 

c:\Install>set countrycode=41

 

:\Install>set countrycode=

GOTO was unexpected at this time.

== 41 GOTO EN

 

Hat jemand ne idee an was das liegen könnte?

 

Vielen Dank für die Hilfe

Link zu diesem Kommentar
  • 2 Wochen später...

so habs nun über einen neuen weg probiert was irgendwie auch nicht funktioniert. scheint aber diesmal ein fehler im script zu sein evntl. kann mir ja hier jemand weiterhelfen.

 

---------------------

wmic os get oslanguage >sprache.tmp

FOR /F "tokens=2 " %%i IN (sprache.tmp) DO SET oslanguage=%%i

 

IF %oslanguage% == 1033 GOTO EN

IF %oslanguage% == 1031 GOTO DE

IF %oslanguage% == 1036 GOTO FR

 

:EN

rem englisch

 

:DE

rem deutsch

 

:FR

rem franz

--------------------

 

dieses script gibt folgenden fehler aus (auch auf XP):

 

--------------------

C:\Install>wmic os get oslanguage 1>sprache.tmp

 

C:\Install>FOR /F "tokens=2 " %i IN (sprache.tmp) DO SET oslanguage=%i

"GOTO" ist syntaktisch an dieser Stelle nicht verarbeitbar.

C:\Install>IF == 1033 GOTO EN

---------------------

 

 

grüsse

Link zu diesem Kommentar

also wmic os get oslanguage gibt den folgenden wert an die .tmp datei:

 

Oslanguage

1031

 

dieser befehl funktioniert unter XP

 

for /F %%i in ('wmic os get oslanguage') do set oslanguage=%%i

 

aber aufm server nicht - deshalb der umweg über ne zwischendatei weils dann komischerweise aufm server auch geht.

 

beispiel IP abfrage (die funktioniert xp/2003/2008):

 

IPCONFIG | FINDSTR "IP-Adresse" >ip.tmp

FOR /F "tokens=2,3,4 delims=:. " %%a IN (ip.tmp) DO SET SubNet=%%a.%%b.%%c

DEL ip.tmp

 

IF %SubNet% == 192.168.1 GOTO Netzwerk1

 

werd mir mal powershell anschauen - würds aber lieber per batch machen

 

danke schonmal für die hilfe

Link zu diesem Kommentar

Schau dir Beitrag No. 7 an: Frage: Landessprache ber CMD Script abfragen - Batch & Shell - benutzer.de

 

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%

IF %oslanguage% == 1033 GOTO EN
IF %oslanguage% == 1031 GOTO DE
IF %oslanguage% == 1036 GOTO FR

:EN
rem englisch
Echo %oslanguage%
GOTO END

:DE
rem deutsch
Echo %oslanguage%
GOTO END

:FR
rem franz
Echo %oslanguage%
GOTO END

:END

Link zu diesem Kommentar

Ach ich bin am verzweifeln. Hier meine vorübergehende Lösung - funktioniert jedoch nur wenn der User lokale Adminrechte hat wegen wmic.

 

---------------

wmic os get OSLanguage /value>%temp%\sprache.txt

for /f "delims=" %%i in ('type %temp%\sprache.txt') do set "%%i"

del %temp%\sprache.txt

 

IF %oslanguage% == 1033 GOTO EN

IF %oslanguage% == 1031 GOTO DE

IF %oslanguage% == 1036 GOTO FR

 

:EN

IPCONFIG | FINDSTR "IP Address" >%temp%\ip.txt

FOR /F "tokens=2,3,4 delims=:Address. " %%a IN (%temp%\ip.txt) DO SET SubNet=%%a.%%b.%%c

DEL %temp%\ip.txt

 

IF %SubNet% == 192.168.1 GOTO Netz1

IF %SubNet% == 192.168.2 GOTO Netz2

IF %SubNet% == 192.168.3 GOTO Netz3

 

 

:DE

IPCONFIG | FINDSTR "IP-Adresse" >%temp%\ip.txt

FOR /F "tokens=2,3,4 delims=:. " %%a IN (%temp%\ip.txt) DO SET SubNet=%%a.%%b.%%c

DEL %temp%\ip.txt

 

IF %SubNet% == 192.168.1 GOTO Netz1

IF %SubNet% == 192.168.2 GOTO Netz2

IF %SubNet% == 192.168.3 GOTO Netz3

 

:FR

IPCONFIG | FINDSTR "Adresse IP" >%temp%\ip.txt

FOR /F "tokens=2,3,4 delims=:AdresseIP. " %%a IN (%temp%\ip.txt) DO SET SubNet=%%a.%%b.%%c

DEL %temp%\ip.txt

 

IF %SubNet% == 192.168.1 GOTO Netz1

IF %SubNet% == 192.168.2 GOTO Netz2

IF %SubNet% == 192.168.3 GOTO Netz3

---------------

 

braucht die powershelllösung ebenfalls Adminrechte oder kann ich als user die OS Angaben auslesen?

bearbeitet von slouch
Link zu diesem Kommentar

Hallo,

evtl. kannst du mit diesem kleinen commandTool was anfangen. Es liefert ballastfrei die OSLanguage, auch auf Basis von wmi win32_operatingsystem.

 

cu

blub

 

der Vollständigkeit halber noch der VBCode:

 

Imports System.Management

Module Module1

Sub Main()

 

Dim objQuery As New ObjectQuery("SELECT * FROM Win32_operatingsystem")

Dim searcher As New ManagementObjectSearcher(objQuery)

 

For Each mem As ManagementObject In searcher.Get

Console.WriteLine(mem("OSLanguage"))

Next

End Sub

 

End Module

getOSLanguage.zip

bearbeitet von blub
Link zu diesem Kommentar

Vielen Dank euch allen - das script läuft nun - murphy sollte besser mal ruhe geben

 

hier die finale version falls es mal jemand brauchen sollte (getoslanguage.exe und ifmember.exe werden benötigt)

 

---------------------

getoslanguage >sprache.txt

FOR /F %%i IN (sprache.txt) DO SET oslanguage=%%i

DEL sprache.txt

 

IF %oslanguage% == 1033 GOTO EN

IF %oslanguage% == 1031 GOTO DE

IF %oslanguage% == 1036 GOTO FR

 

:EN

IPCONFIG | FINDSTR "IP Address" >ip.txt

FOR /F "tokens=2,3,4 delims=:Address. " %%a IN (ip.txt) DO SET SubNet=%%a.%%b.%%c

DEL ip.txt

 

IF %SubNet% == 192.168.1 GOTO Netz1

IF %SubNet% == 192.168.2 GOTO Netz2

IF %SubNet% == 192.168.3 GOTO Netz3

 

:DE

IPCONFIG | FINDSTR "IP-Adresse" >ip.txt

FOR /F "tokens=2,3,4 delims=:. " %%a IN (ip.txt) DO SET SubNet=%%a.%%b.%%c

DEL ip.txt

 

IF %SubNet% == 192.168.1 GOTO Netz1

IF %SubNet% == 192.168.2 GOTO Netz2

IF %SubNet% == 192.168.3 GOTO Netz3

 

:FR

IPCONFIG | FINDSTR "IP Address" >ip.txt

FOR /F "tokens=2,3,4 delims=:AddressIP. " %%a IN (ip.txt) DO SET SubNet=%%a.%%b.%%c

DEL ip.txt

 

IF %SubNet% == 192.168.1 GOTO Netz1

IF %SubNet% == 192.168.2 GOTO Netz2

IF %SubNet% == 192.168.3 GOTO Netz3

 

:Netz1

rem Allgemeine Netzlaufwerke

net use G: \\SERVER\DATEN /persistent:no

net use H: \\SERVER\USER\%username% /persistent:no

net use W: \\SERVER\Work /persistent:no

 

\\SERVER\netlogon\ifmember Informatik

if errorlevel 1 (net use J: \\SERVER\informatik /persistent:no)

 

GOTO ENDE

 

:Netz2

REM Netzlaufwerk Netz2

Net Use G: \\SERVER\DATEN /persistent:no

Net Use H: \\SERVER\User\%username% /persistent:no

 

GOTO ENDE

 

:Netz3

REM Netzlaufwerk Netz3

Net Use G: \\SERVER\DATEN /persistent:no

Net Use H: \\SERVER\User\%username% /persistent:no

GOTO ENDE

 

:ENDE

--------------------------

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...