Sven Eichler 10 Geschrieben 25. Juni 2003 Melden Teilen Geschrieben 25. Juni 2003 Hi! Normalerweise ist es nicht meine Art, Stress zu machen, aber jetzt hab ich grad ein kleines Problem: Ich muss schnellstmöglich eine kleine Batchdatei haben, bei der ich Drucker mappen kann, nachdem ich eine Eingabe getätigt habe. Hintergrund: Mehrere Rechner, benannt nach dem Schema BlubbXX, wobei "XX" jeweils für zwei Ziffern steht. Also "Blubb01", "Blubb02" usw. Jetzt wird auch noch ein altes DOS-Programm eingesetzt, dass einen Drucker auf LPT1: fordert. Nicht jeder Arbeitsplatz hat aber einen lokalen drucker, also wird das Ganze über "net use" gelöst. Jetzt bracuhe ich aber eine Batch, die den Benutzern ermöglicht, einfach die beiden Ziffern ("XX" ) einzugeben, woraufhin dann per Batch ein Befehl wie "net use lpt1: BlubbXX" gestartet wird. Diese Batch kommt in AllUsers.<domain>\Autostart, dann bekommt jeder das Ding beim Anmelden gestartet. Ich habs probiert, mir aber an der Variablen die Zähne ausgebissen... Mir rennt die Zeit weg, darum die Bitte um Hilfe... Jetzt nochmal im Klartext: User bekommt ungefähr das hier: "Bitte geben Sie den Rechnernamen ein:" __ <==Benutzereingabe, entweder nur zwei Ziffern oder aber auch den ganzen Rechnernamen... (Jetzt wird der Drucker im Hintergrund gemappt) "Der Drucker an Rechner BlubbXX wurde verbunden" Im Fehlerfall sollte der User aber auch eine Meldung erhalten, damit er sich dann nicht wundert, warum es nicht geht... Wer mir hilft, der bekommt mindestens einen Kasten virtuelles, saukaltes Bier, mit mehr kann ich leider nicht dienen... Zitieren Link zu diesem Kommentar
Sven Eichler 10 Geschrieben 25. Juni 2003 Autor Melden Teilen Geschrieben 25. Juni 2003 Ich hab wenigstens mal was rausgekriegt: Ich bin jetzt immerhin soweit, dass ich eine Benutzereingabe habe, jetzt sollte ich nur wissen, wie ich die Variable, die da erstellt wird bzw. der dort ein Wert zugeordner wird, wieder einbringen kann... Es muss dann heissen: net use lpt1: \\blubb<Wert der Variablen>\Freigabename Den Freigabenamen muss ich auch abfragen lassen, da wir unterschiedliche Druckertypen verwenden, allerdings ist die Nomenklatur der Freigaben wenigstens geregelt. Wenn ich weiss, wie man Variablen wieder einbringt, dann ist mir schon seeeeehr geholfen! Zitieren Link zu diesem Kommentar
Sven Eichler 10 Geschrieben 25. Juni 2003 Autor Melden Teilen Geschrieben 25. Juni 2003 Soooo, jetzt hab ich das Ding eigentlich schon so richtig am funktionieren, nur noch ein Problem: Die Geschichte mit dem Errorlevel ist mir absolut unklar - ich möchte, dass er mir, je nach Funktionieren des Mappens oder nicht eine Erfolgs- bzw. Fehlermeldung ausgibt. Ich poste mal, was ich bisher habe: ##### @echo off net use lpt1: /d cls echo DRUCKER-EINRICHTUNG FUER DOS-PROGRAMME echo Bitte geben Sie den Namen des Druckers ein, den Sie verbinden moechten. echo Es genuegt, wenn Sie die Ziffer eingeben: set /P d= echo Bitte geben Sie den Typ des Druckers ein, den Sie verbinden moechten. echo Es genuegt, wenn Sie die letzten Ziffern eingeben echo (z.B. "1010" fuer einen Kyocera FS-1010): set /p t= net use lpt1: \\achern%d%\kyo%t% if errorlevel 0 goto :1 else goto :2 <== Genau hier hänge ich, wie muss ich das schreiben, damit ich auf den unteren Teil verweisen kann? :1 echo Es trat ein Fehler auf. Bitte ueberpruefen Sie, ob der gewuenschte echo Rechner und Drucker eingeschaltet sind. Versuchen Sie es erneut. pause exit :2 echo Der Drucker Kyocera FS-%t% an PC Achern%d% steht jetzt zur Verfuegung. echo Bitte starten Sie Ihre DOS-Anwendung erneut, damit die Einstellungen echo uebernommen werden. pause exit Zitieren Link zu diesem Kommentar
grizzly999 11 Geschrieben 25. Juni 2003 Melden Teilen Geschrieben 25. Juni 2003 Ich bin mir nicht mehr sicher, ob hier die ELSE Anweisung genommen werden kann. Beser so: if errorlevel 1 goto xy if errorlevel 0 goto yz grizzly999 Zitieren Link zu diesem Kommentar
Sven Eichler 10 Geschrieben 25. Juni 2003 Autor Melden Teilen Geschrieben 25. Juni 2003 Tja, das hab ich auch schon versucht, klappt nicht, er geht einfach weiter im Programm und ignoriert den "goto". Ich hab das dumpfe Gefühl, es liegt am Wert des Errorlevels, und genau da hab ich keine Ahnung, wie ich den rausbekommen soll... Bin mittlerweile doch leicht am verzweifeln... Aber laufen muss es trotzdem... Zitieren Link zu diesem Kommentar
grizzly999 11 Geschrieben 25. Juni 2003 Melden Teilen Geschrieben 25. Juni 2003 So allgemein ein wenig Batch-Hilfe hier: http://www.antonis.de/dos/batchtut/bat-kurs/ Speziell zu deinem Problem: Welchen errorcode ein Programm zurückgibt, ist im einzelnen nicht zu sagen. Meist gibt eine fehlerfreie Ausführung 0 zurück. Zum Überprüfen baue doch in jeden Programmteil :1 und :2 ein echobefehl mit pause ein, dann siehst du, wo er hingesprungen ist, und kannst auf den errorlevel schliessen grizzly999 Zitieren Link zu diesem Kommentar
olafw 10 Geschrieben 25. Juni 2003 Melden Teilen Geschrieben 25. Juni 2003 Habe mal ein Bsp für dich in Kixtart: ;Druckerzuweisung use \\mensrv08 /user:??? /password:??? IF ADDPRINTERCONNECTION ("\\MENSRV08\NEC_cP6") =0 ? "NEC DRUCKER VERBUNDEN" else ADDPRINTERCONNECTION ("\\MENSRV08\NEC_cP6") ENDIF use \\bdcsrv06 /user:??? /password:??? IF ADDPRINTERCONNECTION ("\\bdcSRV06\lexmark 600") =0 ? "Lexmark DRUCKER VERBUNDEN" else ADDPRINTERCONNECTION ("\\bdcSRV06\lexmark 600") ENDIF Einbau ins Logon-Script! Damit benötigst Du auch kein Eingabefenster mehr! Zitieren Link zu diesem Kommentar
Sven Eichler 10 Geschrieben 25. Juni 2003 Autor Melden Teilen Geschrieben 25. Juni 2003 Hui, wenn man mal durchgestiegen ist, dann ist eigentlich gar nicht mal so schwer... Hat mich doch glatt mal wieder der Ehrgeiz gepackt... :D Ist sicherlich noch verbesserungswürdig, aber im Endeffekt schauts jetzt so aus: ### @echo off color 79 echo DRUCKER-EINRICHTUNG FUER DOS-PROGRAMME echo Wollen Sie einen lokalen A4- oder einen A3-Drucker verbinden? echo A4 - Druecken Sie die "1" echo A3 - Druecken Sie die "2" set /p groesse= if %groesse% == 1 goto :a4 if %groesse% == 2 goto :a3 :a4 net use lpt1: /d cls echo Bitte geben Sie den Namen des Druckers ein, den Sie verbinden moechten. echo Es genuegt, wenn Sie die beiden Ziffern des Rechners eingeben: echo (bei Achern01 beispielsweise nur "01") set /P r= echo Bitte geben Sie den Typ des Druckers ein, den Sie verbinden moechten. echo Es genuegt, wenn Sie die letzten Ziffern eingeben echo (z.B. "1010" fuer einen Kyocera FS-1010): set /p t= net use lpt1: \\achern%r%\kyo%t% if %errorlevel% == 1 goto :Fehlera4 if %errorlevel% == 0 goto :OKa4 :Fehlera4 color 7c echo Es trat ein Fehler auf. Bitte ueberpruefen Sie, ob der gewuenschte echo Rechner und Drucker eingeschaltet sind. Versuchen Sie es erneut. echo Wollen Sie es erneut versuchen? (j/n) set /p wa4= if %wa4% == j goto :a4 if %wa4% == n goto :Ende :OKa4 echo Der Drucker Kyocera FS-%t% an PC Achern%d% steht jetzt zur Verfuegung. echo Bitte starten Sie Ihre DOS-Anwendung erneut, damit die Einstellungen echo uebernommen werden. pause goto :end :Ende color 79 cls echo Wollen Sie eine Nachricht an den Administrator senden? (j/n) set /p message= if %message% == j goto :senda4 if %message% == n goto :end :senda4 net send admin %username% an Rechner %computername% konnte Kyo-%t% an ACHERN%r% nicht mappen. if %errorlevel% == 0 echo Die Nachricht wurde verschickt. pause exit :end exit :a3 cls color 79 echo In welchem Buero sind Sie? echo Buero 1 - Druecken Sie die "1" echo Buero 2 - Druecken Sie die "2" set /p buero= net use lpt2: /d if %buero% == 1 net use lpt2: \\pc01\kyo7000pc01 if %errorlevel% == 1 goto :Fehlera3 if %errorlevel% == 0 goto :OKa3 if %buero% == 2 net use lpt2: \\svr-exc\Kyozik if %errorlevel% == 1 goto :Fehlera3 if %errorlevel% == 0 goto :OKa3 :fehlera3 color 7c echo Es trat ein Fehler auf. Bitte ueberpruefen Sie, ob der gewuenschte echo Rechner und Drucker eingeschaltet sind. Versuchen Sie es erneut. echo Wollen Sie es erneut versuchen? (j/n) set /p wa3= if %wa3% == j goto :a3 if %wa3% == n goto :senda3 :oka3 echo Der A3-Drucker in Buero%buero% steht jetzt zur Verfuegung. echo Bitte starten Sie Ihre DOS-Anwendung erneut, damit die Einstellungen echo uebernommen werden. pause goto :end :senda3 color 79 net send admin %username% an Rechner %computername% konnte den A3-Drucker in Buero%buero% nicht mappen. if %errorlevel% == 0 echo Die nachricht wurde verschickt. pause goto :end ### Naja, vielleicht nicht schön :shock:, aber selten :D 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.