Jump to content
Sign in to follow this  
slouch

Script Sprachabfrage funktioniert nicht auf Server 2003/2008

Recommended Posts

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

Share this post


Link to post

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

Share this post


Link to post

Nu ja... wie man sieht, kommt wohl nix zurück in oslanguage, daher geht "IF == ..." natürlich nicht.

 

So wie's aussieht, funktioniert in der FOR-SChleife etws nicht. Was, weiß ich auf Anhieb auch nicht :(

Share this post


Link to post

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

Share this post


Link to post

Hab grad mal damit rumgespielt:

Der Inhalt der sprache.tmp sieht zwar korrekt aus, wenn ich jedoch von Hand eine Textdatei erstelle und einfach die 2 Einträge reinschreibe, dann geht's.

D.h. wmic schreibt da noch irgendwas anders rein...

Share this post


Link to post

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

Share this post


Link to post

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?

Edited by slouch

Share this post


Link to post

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

Edited by blub

Share this post


Link to post

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

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

Share this post


Link to post

Hallo,

den Umweg über sprache.txt kannst du dir sparen:

 

FOR /F %%i IN ("c:\temp\getoslanguage.exe") DO SET oslanguage=%%i
%oslanguage%

 

cu

blub

Share this post


Link to post
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...