Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Rückgabewerte abfangen

Mitglied: webbudda

webbudda (Level 1) - Jetzt verbinden

12.03.2009, aktualisiert 19:09 Uhr, 17545 Aufrufe, 3 Kommentare

Hallo,

ich habe einen batch, der in einer zeile einen Rückgabe wert zurückliefert:

1.bat
@ExIT /b 10



hintergrund: ich möchte an eine externe anwendung, welche 1.bat aufruft einen code zurückgeben. habe gerade bemerkt, dass ich diesen mit echo %errorlevel% abfragen kann.
angeblich bekommt die aufrufende prozedur aber immer den code "0" zurück.

gibt es keine möglichkeit den richtigen return code an eine aufrufende anwendung zurückzugeben?

Gruß
Mitglied: Biber
12.03.2009 um 19:53 Uhr
Moin webbudda,

angeblich bekommt die aufrufende prozedur aber immer den code "0" zurück.
Kann schon sein.
Wenn ich eine Batchdatei nach Deinem Muster oben erzeuge, dann liefert die erstmal beim test am CMD-Prompt das erwartete Ergebnis.
01.
echo @EXIT /B 10 >ErrLev10.cmd 
02.
-- Batchdatei ist erzeugt... jetzt aufrufen und Errorlevel prüfen: 
03.
Errlev10 
04.
 
05.
@echo %errorlevel% 
06.
10  <-------------Rückgabe bzw. %Errorlevel%-Wert
Okay, aber...
Wenn die aufrufende Applikation einen Batch (oder ein .pdf oder ein .doc, also eine nicht "allein" ausführbare "Datendatei" ) aufruft
--> dann ist ja der tatsächliche Aufruf "starte das .PDF" zu übersetzen mit
"Starte den Adobe Reader, damit der das PDF starten kann"
- oder in Deinem Fall
---> ist ja der tatsächliche Aufruf "starte die .Bat" zu übersetzen mit
"Starte die CMD.exe, damit die die .Bat starten kann"

Meist ist dieser Aufruf dann so einer.
%comspec% /c xy.bat
- bzw übersetzt dann
C:\WINDOWS\system32\cmd.exe /c xy.bat
... in unserem Fall simulierbar am Prompt mit
cmd /c errlev10
... und rate mal, was passiert.
echo %errorlevel%
0

---> Du bekommst NICHT das liebevoll gesetzte ErrorLevel 10 der Batch zurück, sondern...
---> Hoch erhobenen hauptes das stolze "Errorlevel 0" = Ich habe ohne Fehler fertig" der CMD.exe

Wenn Du das Batch-gesetzte Errorlevel transportieren willst, dann
  • entweder sicherstellen, dass Dein Batch NICHT in einer neuen Shell gestartet wird mit "CMD /C"
  • oder mit den Wölfen heulen, nur lauter:
01.
 [---hier ist Errorlevel gleich 0 --] 
02.
cmd /c call errlev10 
03.
echo %errorlevel% 
04.
 10       <----hier ist trotz eines in einer neu gestarteten CMD-Instanz  
05.
             <--- und dort gesetzten Errorlevels ebenfalls ->Errorlevel = 10
Aber - auch wenn es so funktioniert.... das kannst Du so niemandem erklären.

Grüße
Biber
[Edit] Sinn entstellenden Tippfehler korrigiert -s.u. [/Edit]
Bitte warten ..
Mitglied: webbudda
12.03.2009 um 20:50 Uhr
Ok besten dank erstmal.

Zitat:
entweder sicherstellen, dass Dein Batch in einer neuen Shell gestartet wird mit "CMD /C"

aber damit gehts ja gerade eben nicht. Tippfehler deinerseits?

Mit cmd /c call errlev10 klappt es aber
Bitte warten ..
Mitglied: Biber
12.03.2009 um 21:26 Uhr
Moin webbudda,

Du hast natürlich Recht...
entweder sicherstellen, dass Dein Batch in einer neuen Shell gestartet wird mit "CMD /C"
aber damit gehts ja gerade eben nicht. Tippfehler deinerseits?

--->Hier fehlt(e) natürlich das wichtigste Wort "NICHT".

Gemeint war und ist natürlich
... sicherstellen, dass Dein Batch NICHT in einer neuen Shell gestartet wird mit "CMD /C"

Danke für den Hinweis
Biber
Bitte warten ..
Ähnliche Inhalte
Visual Studio
Rückgabewerte von Funktionen
Frage von MarcoBornVisual Studio9 Kommentare

Hallo Forum, ich schreibe gerade in VB.NET eine Funktion, die als Rückgabewert einen Double-Wert zurückliefert. Wenn jedoch vom Nutzer ...

Visual Studio
Tastatureingaben abfangen
gelöst Frage von joehuabaVisual Studio7 Kommentare

Hallo Zusammen, ich hab folgendes Problem: Ich fange mit einem Programm bestimmte Tastenkombinationen ab. Das funktioniert auch soweit. Allerdings ...

Python
Rückgabewert von MySQL-Funktion
gelöst Frage von NativeModePython4 Kommentare

Hallo, ich habe für eine mySQL-Abfrage eine eigene Funktion erstellt und abgespeichert: Soweit so gut, das funktioniert wenn ich ...

Microsoft Office

Excel bei bestimmten Werten einen Rückgabewert

gelöst Frage von easy4breezyMicrosoft Office2 Kommentare

Hi Leute, es geht sozusagen um ein Ticketsystem mit Prioritäten. Die 3 Prioritäten sind Low, Medium und High, die ...

Neue Wissensbeiträge
Humor (lol)
IoT-Gefahr: Smartes Aquarium leckt!
Information von Lochkartenstanzer vor 2 TagenHumor (lol)3 Kommentare

Moin, Die IoT-Manie hat weitere Opfer gefunden. Ein Casino-Leck durch ein smartes Aquarium: Allerdings haben sie kein Wasser, sondern ...

Router & Routing

Alte Fritzbox 7270 mit VPN und SIP-Telefonie hinter O2 Homebox 6641 als "Modem"

Erfahrungsbericht von the-buccaneer vor 3 TagenRouter & Routing3 Kommentare

Nun war es soweit: Auch O2 hat mich mit VOIP zwangsbeglückt. Heute am Privatanschluss, in 2 Wochen ist das ...

Sicherheit

Ungepatchte Remote Code Execution-Lücke in LG NAS

Information von kgborn vor 3 TagenSicherheit

Nutzt wer LG NAS-Einheiten? In den NAS-Einheiten der LG Network Storage-Einheiten gibt es eine sehr unschöne Schwachstelle, die einen ...

Windows Update

Neue Version KB4099950 NIC Einstellungen gehen verloren

Information von sabines vor 3 TagenWindows Update2 Kommentare

Es ist eine neue Version des KB4099950 verfügbar, die das Problem mit den verlorenen Netzwerkeinstellungen lösen soll. Das Datum ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Netzwerkmanagment im Haus mit Switch, Panel und pfsense
gelöst Frage von CorraggiounoNetzwerkmanagement19 Kommentare

hi zusammen, wir sind gerade dabei das ganze Haus bzw. die einzelnen Zimmer mit netzwerkdosen zu versorgen. Vom Keller ...

Netzwerkgrundlagen
VLAN - Offene Fragen
Frage von KnettenbrechNetzwerkgrundlagen17 Kommentare

Hallo zusammen, ich befasse mich derzeit mit dem Thema VLAN. Hierzu habe ich schon einige Guides gelesen, einschließlich des ...

Google Android
Empfehlung: Android Ortungsapp
gelöst Frage von certifiedit.netGoogle Android13 Kommentare

Guten Morgen, grundsätzlich vorweg, ich wollte mich eben schlau machen, bzgl einer Ortungsapp, welche Androidbasiert einem anderen Androidsmartphone mitteilt, ...

Router & Routing
VPN hinter zweiter Fritzbox nutzen im Nachbarhaus
gelöst Frage von georg2204Router & Routing11 Kommentare

Hallo zusammen, ich blicke hier leider nicht mehr so ganz durch. In Haus 1 steht eine Fritzbox 7390, diese ...