lou 10 Geschrieben 19. August 2003 Melden Teilen Geschrieben 19. August 2003 Hallo, Wir haben Citrix Metaframe XP laufen, unsere Administratoren wollen auch von zuHause aus Arbeiten! Mir ist gesagt worden das 99% der Abstürze bzw. Fehler bei Citrix, ein Druckerproblem ist! Also Automatische Druckerzuordnung Deaktivieren! Das habe ich nun gemacht, nun will ich über ein Script, mittels der variablen %clientname% den Drucker abfragen! // @echo on cls net time \\10.49.10.13 /set /yes net use p: /d net use p: \\opidata\public net use g: /d net use g: \\opidata\edv net use h: /d net use h: \\opidata\%username% echo %clientname% pause if %clientname%=="FIRMENWS" goto firma if %clientname%=="LOU" goto home :firma rem -- Drucker verbinden -- rundll32 printui.dll,PrintUIEntry /in /n"\\FIRMA\fs600edw" rundll32 printui.dll,PrintUIEntry /in /n"\\FIRMA\fs600edv" rem -- Standarddrucker setzen -- rundll32 printui.dll,PrintUIEntry /y /n"\\FIRMA\fs600edv" goto weiter :home rem -- Drucker verbinden -- rundll32 printui.dll,PrintUIEntry /in /n"\\LOU\fs680" rem -- Standarddrucker setzen -- rundll32 printui.dll,PrintUIEntry /y /n"\\LOU\fs680" goto weiter :weiter pause // aber es ist egal, welches Client ankommt, es wird IMMER die :firma routine durchgespielt :/ Kann mir jmd helfen? MfG Marius Zitieren Link zu diesem Kommentar
auer 10 Geschrieben 19. August 2003 Melden Teilen Geschrieben 19. August 2003 Die if-Ausdrücke müssen lauten: if "%clientname%" == "FIRMENWS" Wenn man das Script ohne Anführungszeichen verwendet, werden beide Abfragen verneint und es wird einfach die nächste Zeile ausgeführt - zufälligerweise der Firmenpart. Wäre %clientname% nicht gesetzt, so würde bei fehlenden Anführungszeichen ein nicht auswertbarer Ausdruck (if == "") entstehen, deshalb diese Syntax. Test von Scripts - immer ohne @echo off - dann werden solche Dinge im Output sichtbar. Falls es mit der Groß/Kleinschreibung Schwierigkeiten gibt, kann man besser echo "%clientname%" | find /i /c "FIRMENWS" if "%errorlevel%" == "0" verwenden, das /i bei find ignoriert. --------- Gruß, Auer Zitieren Link zu diesem Kommentar
lou 10 Geschrieben 19. August 2003 Autor Melden Teilen Geschrieben 19. August 2003 Hallo auer, das mit den "" funktioniert, besten Dank!! könntest du mir das mit // Falls es mit der Groß/Kleinschreibung Schwierigkeiten gibt, kann man besser echo "%clientname%" | find /i /c "FIRMENWS" if "%errorlevel%" == "0" verwenden, das /i bei find ignoriert. // noch einmal genauer erklären, ich kann dir da nicht so folgen ;) was machen die beiden Zeilen genau? mfg Marius Zitieren Link zu diesem Kommentar
auer 10 Geschrieben 19. August 2003 Melden Teilen Geschrieben 19. August 2003 Das Problem besteht darin, daß die Gleichheitsabfrage bytegenau ist, "maier" ist also etwas anderes als "MAIER". Bei den Namen von Umgebungsvariablen wird Groß/Klein ignoriert, bei den Werten jedoch nicht. Setzt also jemand seine Variable %clientname% auf 'FirmenWS', so enthält das Script einen ziemlich versteckten Fehler, nach dem man lange suchen darf. Dieses Problem läßt sich prinzipiell vermeiden, indem man mit echo %clientname% eine Ausgabe erzeugt und diese dem find übergibt, das mit dem /i - Parameter Groß/Klein ignoriert und die Variable %errorlevel% auf 0 bei gefundenem Wert, ansonsten auf 1 setzt. WinXP kennt zwar für den IF - Ausdruck ebenfalls einen /I (ignore) - Parameter, ich weiß allerdings nicht, ob dieser schon unter W2K vorhanden war - deshalb habe ich diese Version weggelassen. ------- Gruß, Auer 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.