Thread cmd- laufwerk einbinden, fehler auffangen
(4 answers)
Opened by lolz at 2007-06-01 16:06
hallo,
ich will mit einem skript cmd befehle eingeben. wenn fehler erzeugt werden, brauche ich im skript die fehlernummer, damit ich entsprechen reagieren kann... wenn man das befehl "nur so" in der cmd eingibt, wird immer eine rückmeldung angezeigt... "der befehl wurde erfolgreich durchgeführt", oder "...fehlernummer 85...". Diese 85 brauche ich in meinem skript. nun habe ich mich ein bisschen im internet umgeschaut, und die funktion system(). und `` gefunden. mit `` wird behauptet, die rückgabe wird nicht mehr im standard-output angezeigt, sondern man kann sie einer variablen zuweisen. So wie ich es verstehe, sollte z.B. $rueck = `net use P: \\\\xxxx\\xxxx xxxx /user:xxxx /persistent:no`; in $rueck genau das speichern, was die cmd zurückgibt. aus diesem text will ich später die fehlernummer rausfischen ! ich arbeite übrigens mit eclipse. groÃes problem ist aber dass die cmd rückgabe weiterhin auf der console ausgegeben wird. und wenn ich print $rueck; versuche, kommt nichts raus. habe ein bisschen weitergesucht, und gefunden, man müsste diese rückgabe formatieren. dafür gibt es folgenden befehl: Win32::FormatMessage($rueck); den gebe ich aus mit print, und es kommt immer "das befehl wurde erfolgreich beendet" raus, auch wenn es fehlermeldungen gibt. somit erhalte ich mit $rueck = `net use P: \\\\xxxx\\xxxx xxxx /user:xxxx /persistent:no`; print Win32::FormatMessage($rueck); zwei ausgaben auf der konsole, nämlich "Systemfehler 85 aufgetreten. Der lokale Ger&âtename wird bereits verwendet." und unten "Der Vorgang wurde erfolgreich beendet." hatte eigentlich erwartet, dass der erste text in $rueck gespeichert wurde. das ist auch was ich brauche. eigentlich nur die 85. wenn jemand weiÃ, wie ich mit dem skript an diese zahl komme (und er mir es erklärt, klar :) ), wäre mein problem gelöst. |