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 Batch startet andere Batch errorlevel übergabe von 2ter an 1te batch ?

Mitglied: Landstreicher

Landstreicher (Level 1) - Jetzt verbinden

28.11.2007, aktualisiert 05.12.2007, 10422 Aufrufe, 6 Kommentare

Hallo,

ich habe ein Problem, was sich einfach nicht von selbst in Luft auflösen will.
Ich habe eine Batch :

01.
@echo off
02.
echo. >D:\cognos\Contributor\Macros\exec.txt
03.
title Upload_Macro-Ausfuehrung
04.
:importerstellung
05.
cls
06.
if "%1"=="" goto :eingabe_importerstellung
07.
set batchname=\%1
08.
goto :ausgabe_importerstellung
09.

10.
:eingabe_importerstellung
11.
echo ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
12.
echo º Info:                                                                     º
13.
echo º Macros werden erstellt, ohne den Contributor starten zu mussen ausgefuhrt º
14.
echo º Kompletten Makronamen eingeben (bei mehreren, wird eine Queue erstellt    º
15.
echo º Eingabe "start" um die Queue zu starten (statt Macronamen)                º
16.
echo º Eingabe "erstell" um eine Batch zu erstellen (statt Macronamen)           º
17.
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
18.
echo; 
19.
Echo  Auszufuehrende Makros : 
20.
echo  _______________________  
21.
echo;       
22.
for /F "tokens=1-10 delims=<> " %%a in ('findstr bat D:\cognos\Contributor\Macros\exec.txt') do echo  %%a
23.
echo ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
24.
set /p Batchname=Appl. - MakroNamen eingeben:
25.
if "%batchname%"=="start" goto :endstep
26.
if "%batchname%"=="erstell" goto :startup
27.
if "%batchname%"=="list" goto :list_verzeich
28.
goto :ausgabe_importerstellung
29.

30.
:ausgabe_importerstellung
31.
echo Ausgabe zur Kontrolle:
32.
echo Batchname=%batchname%.bat
33.
if "%batchname%"=="start" goto :endstep
34.
echo;
35.
goto :kontrolle_importerstellung
36.

37.
:kontrolle_importerstellung
38.
::dir D:\cognos\Contributor\Macros\%batchname%.bat
39.
if exist D:\cognos\Contributor\Macros\%batchname%.bat goto :batchimportstandart
40.
if not exist D:\cognos\Contributor\Macros\%batchname%.bat goto :stop_yet
41.
GOTO :kontrolle_importerstellung
42.

43.
:batchimportstandart
44.
REM Die Variablen können editiert werden
45.
set zielpfad="D:\cognos\Contributor\Macros\%batchname%.bat"
46.
set macroname=%batchname%
47.
ping 127.0.0.1 -n 3 >nul
48.
echo %Batchname%.bat >>D:\cognos\Contributor\Macros\exec.txt
49.
goto :importerstellung
50.

51.
:endstep
52.
echo endemarke >>D:\cognos\Contributor\Macros\exec.txt
53.
goto :start_upload
54.

55.
:start_upload
56.
call "D:\cognos\Utils\upload_macros\ausfuehrung_contributor_macors.bat"
57.
goto :next_step
58.

59.
:next_step
60.
for /F "tokens=1-10 delims=<> " %%i in ('findstr endemarke D:\cognos\Contributor\Macros\exec.txt') do echo alle Macros wurden ausgefuehrt, dennoch sollten diese auf fehlerfreien lauf geprueft werden.
61.
goto :eingabe_importerstellung
62.

63.
:stop_yet
64.
echo das angebene macro existiert nicht!
65.
echo entweder wurde die dazugehoerige Batch nie erstellt
66.
echo oder es gibt gar kein Macro im Contributor.
67.
echo 1) starte den Contributor und kontrolliere ob es diese Macro gibt!
68.
echo 2) wenn ja erstelle die Batch gib "erstell" ein
69.
goto :eingabe_importerstellung
70.

71.
:startup
72.
call D:\cognos\Batcherstellung.exe
73.
goto :eingabe_importerstellung
74.

75.
:list_verzeich
76.
start "title batchlist" dir /b /tc D:\cognos\Contributor\Macros\*.bat 
77.
goto :eingabe_importerstellung
78.

79.
hier wird nun angegeben, welche batch(es) ich ausführen will.
80.
sollte die batchdatei nicht existieren, so wird ein anderes programm gestartet mit der man diese erstellen kann.
81.
soweit auch alles noch in ordnung
82.

83.
hat man nun alle batches angegeben gibt man "start" ein um diese nacheinander anzustarten dazu wird eine andere batch angestartet
84.

85.
for /F "tokens=1-10 delims=<> " %%a in ('findstr bat D:\cognos\Contributor\Macros\exec.txt') do call :ProcessFile "%%a"
86.
:ProcessFile
87.
set "Variable=%~1"
88.
echo fuehre macro %Variable% aus
89.
call D:\cognos\Contributor\Macros\%Variable%
90.
if errorlevel 0 goto :eof
91.
if errorlevel 1 goto :frage
92.
if errorlevel 2 goto :frage
93.

94.
:frage 
95.
Echo;
96.
Echo Ein Fehler wurde festgestellt beim ausfuehren des Macros %Variable%,
97.
echo soll das naechste Macro trotzdem angestartet werden ?
98.
echo oder soll das fehlerhafte Macro erneut gestartet werden ?
99.
SET /P Choice=[J] fuer erneuter Lauf, [N] naechstes Upload_Macro: 
100.
IF NOT '%Choice%'=='' SET Choice=%Choice:~0,1%
101.
IF /I '%Choice%'=='N' GOTO :eof
102.
IF /I '%Choice%'=='J' GOTO :ProcessFile
103.

104.
IF /I '%Choice%'=='n%' GOTO error
105.

106.
Echo FALSCHE EINGABE von Terminal %COMPUTERNAME% !!!!!
107.
:error
108.
ping 127.0.0.1 -n 3 >nul
109.
goto :start
110.

111.
if not "%1"=="" goto :start
112.

113.
:eof
auch das funktioniert soweit.

jetzt der knackpunkt bei :frage soll er abfangen ob die ausgeführte batch mit errorlevel 1 oder 2 beendet wurde.
denn sollte eine batch abbrechen darf die andere nicht so einfach weiterlaufen und deswegen auch die frage.

kann mir da jemand weiter helfen ?

als hinweis .. ich kann die batches die ausgeführt werden nicht verändern .... zumindest nicht ohne weiteres

gruß landstreicher

PS wie kann man das "batchgeschreibsel" von seinem beitragstext sichtbar trennen wie es in anderen beiträgen sichtbar ist ???
Mitglied: Biber
28.11.2007 um 18:53 Uhr
Moin Landstreicher,

erstmal nur vorab eine kurze Antwort zu Deinem P.S.:
PS wie kann man das "batchgeschreibsel" von seinem beitragstext sichtbar trennen wie es in anderen beiträgen sichtbar ist ???

Indem Du die Formatierungstags <code> verwendest.
Details siehe in den FAQ unter "Formatierungshilfen".

So, dennoch muss ich Dich erstmal mit Deinem Elend allein lassen - ich schau später noch mal auf den eigentlichen Batch, falls er bis dahin nicht erledigt ist.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
28.11.2007 um 19:19 Uhr
Hallo Landstreicher!

Soferne das Problem darin besteht, dass ":frage" trotz korrekter Übergabe eines Errorlevels <> 0 nie erreicht wird, müsste es eigentlich genügen, aus
01.
if errorlevel 0 goto :eof
02.
if errorlevel 1 goto :frage
03.
if errorlevel 2 goto :frage
ein
01.
if not errorlevel 1 goto :eof
zu machen.

Die Begründung dafür findest Du mit "if /?", oder auch gleich hier :
01.
  ERRORLEVEL Nummer Bedingung ist erfüllt, wenn das zuletzt ausgeführte
02.
                    Programm einen Code größer oder gleich der Nummer
03.
                    zurückgibt.
Eine weitere Möglichkeit wäre die Abfrage der Variablen %errorlevel%, etwa mit
01.
if %errorlevel%==0 goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: Landstreicher
29.11.2007 um 12:33 Uhr
danke @ Biber

Moin Bastla,

ich glaub ich hab mich gestern doof ausgedrück (sorry war extrem kaputt).

Also es ist so das die Batchdatei die ausgeführt wird ein programm aufruft, welches aus welchen gründen auch immer abbrechen könnte oder seine aktion nicht zuende führen kann.
dann wird in der batch ein errorlevel zurückgegeben (meistens 2).
allerdings wird diese batch wiederum von einer anderen batch angestartet und diese batch soll nun das errorlevel der anderen auslesen.
ich habe allerdings das gefühl, das geht wirklich nur, wenn ich das mit einer variable mache, oder ?


kurzform


batch startet batch und diese startet ein programm
prgramm kann abbrechen, bacht bekommt errorlevel und soll es an erste batch übergeben damit ggf. nachgestartet werden kann.

grüße landstreicher und wie immer besten dank im vorraus
Bitte warten ..
Mitglied: Biber
29.11.2007 um 12:44 Uhr
Moin Landstreicher,

der Weg zur Antwort führt über den EXIT-Befehl.
01.
>help exit
02.
Beendet den Befehlsinterpreter CMD.EXE oder die aktuelle Batchdatei.
03.

04.
EXIT [/B] [exitCode]
05.

06.
  /B          Beendet das aktuelle Batchprogramm anstatt CMD.EXE.
07.
              Wenn diese Option außerhalb eines Batchprogramms aufgerufen
08.
              wird, wird CMD.EXE beendet.
09.

10.
  ExitCode    Gibt die Zahl an, die an ERRORLEVEL übergeben wird, wenn die
11.
              Option /B angegeben wurde. Wenn CMD.EXE beendet wird, wird diese
12.
              Zahl als "Process Exit Code" übergeben.
Die Batchdatei, die Success/InDieGrützeGehen der EXE-Datei mitbekommt, muss einen entsprechend "verabredeten" Errorlevel weiterreichen.

Beispiel
01.
:: äußere Batchdatei
02.
....
03.
call MeinSklave.bat
04.
If not errorlevel 1 goto :allesPrima
05.
...
Aufgerufene Batch
01.
::meinSklave.bat
02.
....
03.
MachMirDie.exe
04.
Exit /b %errorlevel%
05.
::rem Oder was immer "verabredet" ist
Grüße
Biber
Bitte warten ..
Mitglied: Landstreicher
05.12.2007 um 12:02 Uhr
Hey Biber,

schau an es wirkt ... war ja auch nicht anders zu erwarten

besten dank.
Bitte warten ..
Mitglied: Biber
05.12.2007 um 12:49 Uhr
Moin Landstreicher,

besten dank.
Dafür nich'.

Kannst Du das nächste Mal, wenn wir wieder so weit kommen sollten, in dieser Phase des Threads bitte den kleinen grünen Haken...???

Diesmal mach ich das. Is' ja bald Weihnachten...

Grüße und Dank für das Feedback
Biber
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

Win10 ändert den Errorlevel? ( Batch )

gelöst Frage von clragonBatch & Shell12 Kommentare

Hey Leute, Ich habe heute wieder mit Prozessen herumgebastelt, die sich gegenseitig überwachen. Da plötzlich, habe ich einen Fehler. ...

Batch & Shell

Bedeutung von RD Errorlevel 1 und Abweichung von errorlevel Meldungen in Batch und Konsole

Frage von anmelderBatch & Shell11 Kommentare

Ich lösche einen Flashspeicher im Netzwerk mit: Ich habe den Code vor Tagen erfolgreich getestet und er lief mit ...

Virtualisierung

Windows Server 2ter Domänencontroller im Netzwerk

Frage von nofear87Virtualisierung9 Kommentare

Hallo, ich möchte gern zum testen einen Server 2012 R2 samt Domäne und DHCP einrichten und einen Client (Win10) ...

Windows 10

Windows 10 - Location von 2ter Quicklaunch

Frage von HenereWindows 105 Kommentare

Servus, hab hier nen Win10, das hat eine 2te Schnellstartleiste eingeblendet. Dieser 2te Ordner wurde vor Jahren mal irgendwo ...

Neue Wissensbeiträge
Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 1 TagWindows Mobile

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 3 TagenInternet5 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 3 TagenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 4 TagenWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Bekannte Drosselungen bei Providern ?
Frage von HenereLAN, WAN, Wireless15 Kommentare

Servus zusammen, in bereits angefangen, aber ich hoffe dass der Beitrag hier mehr Informationen bringt. Sind Portdrosselungen bzw gezielte ...

LAN, WAN, Wireless
Temporäre WLAN Verbindung für AD-Login
Frage von Christian.WidauerLAN, WAN, Wireless14 Kommentare

Hallo zusammen, ich weiß leider nicht unter welchem Begriff ich dafür suchen muss, daher habe ich bisher leider nichts ...

Netzwerkmanagement
Reverse Proxy für TCP und UDP Anfragen
gelöst Frage von flxklsNetzwerkmanagement13 Kommentare

Hallo zusammen, ich besitze einen Rootserver, der nur eine öffentliche IP besitzt und auf dem mehrere VMs laufen. Da ...

Netzwerkmanagement
Server bauen
Frage von JugendringNetzwerkmanagement11 Kommentare

Moin Moin, wir, der Jugendring sind ein ständig wachsender Verein mit vielen Unterprojekten. Da liegt es nah, dass wir ...