slouch 10 Geschrieben 10. Juni 2010 Melden Teilen Geschrieben 10. Juni 2010 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 Zitieren Link zu diesem Kommentar
slouch 10 Geschrieben 18. Juni 2010 Autor Melden Teilen Geschrieben 18. Juni 2010 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 Zitieren Link zu diesem Kommentar
Sunny61 809 Geschrieben 18. Juni 2010 Melden Teilen Geschrieben 18. Juni 2010 Hier ist ein Powershell Script, das macht das was Du möchtest: List Operating System Properties Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 18. Juni 2010 Melden Teilen Geschrieben 18. Juni 2010 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 :( Zitieren Link zu diesem Kommentar
slouch 10 Geschrieben 18. Juni 2010 Autor Melden Teilen Geschrieben 18. Juni 2010 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 Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 18. Juni 2010 Melden Teilen Geschrieben 18. Juni 2010 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... Zitieren Link zu diesem Kommentar
Sunny61 809 Geschrieben 18. Juni 2010 Melden Teilen Geschrieben 18. Juni 2010 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 Zitieren Link zu diesem Kommentar
slouch 10 Geschrieben 22. Juni 2010 Autor Melden Teilen Geschrieben 22. Juni 2010 (bearbeitet) 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 22. Juni 2010 von slouch Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 22. Juni 2010 Melden Teilen Geschrieben 22. Juni 2010 (bearbeitet) 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 23. Juni 2010 von blub Zitieren Link zu diesem Kommentar
slouch 10 Geschrieben 23. Juni 2010 Autor Melden Teilen Geschrieben 23. Juni 2010 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 -------------------------- Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 24. Juni 2010 Melden Teilen Geschrieben 24. Juni 2010 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.