Jump to content

Dringend: Batch-skripting-frage


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

Empfohlene Beiträge

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...

Link zu diesem Kommentar

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!

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar

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!

Link zu diesem Kommentar

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

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...