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

Batchaufruf per CALL aus einer 1.Batch und dortiger Verarbeitung ausschließlich eines Labels

Frage Entwicklung Batch & Shell

Mitglied: Batchfan

Batchfan (Level 1) - Jetzt verbinden

23.11.2011, aktualisiert 21:33 Uhr, 4081 Aufrufe, 6 Kommentare

Werte Batch-Freunde
Eine 2.Batch aus einer Ur-Batch aufzurufen mithilfe von Steuervariablen und den Schritt zurück bekomme ich hin.
Aber kann ich das auch anderes lösen ?

Diese Batch1 ruft in einer batch2 ein bestimmtes Label auf und verläßt nach Abarbeitung des Labels die Batch2
Das ganze 2x

01.
REM BAT1 
02.
@echo off 
03.
cls 
04.
echo ____ 1.Aufruf bat2.bat step1 ___ 
05.
call bat2.bat step1 ende 
06.
echo zurück in bat1.bat 
07.
rem 
08.
echo ____ 2.Aufruf bat2.bat step2 ____ 
09.
call bat2.bat step2 ende 
10.
echo zurück in bat1.bat 
11.
:ende
01.
REM BAT2 
02.
@echo on 
03.
if "%2" equ "" ( 
04.
                        echo Spung zum Label ok ... aber : 
05.
                        echo keinen Ausstiegsparameter angegeben. Abbruch. 
06.
                        pause 
07.
                        goto ende 
08.
09.
for %%v in ( step1 step2 ) do if "%1" equ "%%v" goto %%v 
10.
:step1 
11.
echo Befehle ...... 
12.
if "%2" equ "ende" goto ende 
13.
:step2 
14.
echo Befehle ...... 
15.
if "%2" equ "ende" goto ende 
16.
:ende
Gibt es andere Möglichkeiten ?
Lieben Dank für Euere Antworten ... !!!!!

[Edit Biber] Als Code formatiert. [/Edit]
Mitglied: Biber
23.11.2011 um 21:47 Uhr
Moin Batchfan,

zur Beantwortung deiner Frage müssten wir vielleicht dein Ziel, den grossen Plan kennen.

Meine erste Gegen-Frage wäre:
Warum sind denn zwei (oder zweiundzwanzig?) Einzel-One-Trick-Batches sinnvoller und wartbarer als EINE Batchdatei?

Es geht auch mit "Call :BlockInDerGleichenBatchdatei auchMitParameter1 undPara2 usw"

Bei Sprungmarken musst du immer ein explizites "goto RausAusDemJob" oder "goto VersuchsNochMal" angeben nach jedem Block/Label.
Ist nicht sehr flexibel und schon gar nicht wartbar.
Du siehst ja keinem Mädel Label an, wer es wann und von wo anspringt.

Besser ist schon eine Mimik mit geCALLten internen Unterroutinen und deren Rückkehr zu der aufrufenden Zeile.

Grüße
Biber
Bitte warten ..
Mitglied: Batchfan
24.11.2011 um 05:01 Uhr
Hallo Biber
Ich habe nun schon mehrfach größere Anwendungen geschrieben, auch damls in DCL (VMS) und so ... Allerdings habe ich mich dabei in der Feinheit der Anwendungen nicht wirklich weiterentwickelt weil das gröbere ja auch ging und ich es nicht besser wußte. Nebenbei wurden die Betriebssysteme (VMS) und meine Schukung darauf nicht wirklich weitergeschult. Wie dem auch sei ....
Ich kann mich gut in größeren Batchstrukturen bewegen, wenn ich mit lokalen Variablen oder z.N. Kontrolldateien arbeite ... aber wie gesagt, z.B. reguläre Ausdrücke, komplexe For-Schleifen oder kopfgesteuerte Schleifen ect. habe ich mir immer selber gestrickt. Wenn ich aber das sehe, was ihr hier so zusammenstellt, wird mir ganz schummerig. Aber ich will das lernen .

In diesem Fall würde mich interesieren, ob ein Aufruf :
CALL Bat2.bat :Marke
funktioniert und wie am Ende der angesteuerten Marke ein Ausstieg aus Batch2 anders möglich ist als ich es oben gezeigt habe.

Gruß volker
Bitte warten ..
Mitglied: Skyemugen
24.11.2011 um 09:02 Uhr
Aloha,

auch wenn mir das ebenso halb-sinnig erscheint, du könntest doch in der 1. Batch call batch2.bat :Marke aufrufen und in der zweiten Batch
01.
@echo off 
02.
call %1 
03.
goto :eof 
04.
echo Nicht in der Marke 
05.
pause 
06.
goto :eof 
07.
 
08.
:Marke 
09.
echo Mittendrin 
10.
goto :eof
oder wenn du (ich blick deine Struktur heute nicht) unbedingt %2 auf ende abfragen willst, dann eben per call batch2.bat :Marke ende die zwete aufrufen.

greetz André
Bitte warten ..
Mitglied: Batchfan
24.11.2011 um 17:17 Uhr
@echo off
rem bat3.bat
echo ____ 1.Aufruf bat3.bat step1 ___
call bat4.bat :step1
echo zurück in bat3.bat
echo ____ 2.Aufruf bat3.bat step2 ____
call bat4.bat :step2
echo zurück in bat3.bat
goto ende
:ende

@echo off
rem Bat4.bat
call %1
:step1
echo Hier ist bat4.bat step1
goto :eof
:step2
echo Hier ist bat4.bat step2
goto :eof

Ausgabe:
____ 1.Aufruf bat3.bat step1 ___
Hier ist bat4.bat step1 << wäre ok
Hier ist bat4.bat step1 << aber hier die Ausgabe ein 2.tes mal ?
zurück in bat3.bat
____ 2.Aufruf bat3.bat step2 ____
Hier ist bat4.bat step2 << wäre ok
Hier ist bat4.bat step1 << Ausgabe einer vorherigen Marke ?
zurück in bat3.bat

Habe XP SP2 auf dem Rechner ... geht das überhaupt damit, das man eine nichtvorhandene Marke :eof anspringt ?
Normalerweise sollte ein Fehler gemeldet werden. Da das nicht ist, sollte es wohl ok sein.

Was ich sehe ist, das ein Sprung mal soeben in den nächsten Batch nicht möglich ist.
Gruß volker
Bitte warten ..
Mitglied: Biber
24.11.2011 um 20:38 Uhr
Moin Batchfan,

bitte benutze Codeformatierung.

Füge in Bat4.bat zwischen der 3.ten Zeile ("call %1") und Zeile 4 (":step1") eine neue Zeile ein mit "goto :eof"

Die Ausgabe sollte sich ändern in

1.Aufruf bat3.bat step1
Hier ist bat4.bat step1
zurück in bat3.bat
2.Aufruf bat3.bat step2
Hier ist bat4.bat step2
zurück in bat3.bat


Grüße
Biber
Bitte warten ..
Mitglied: Batchfan
25.11.2011 um 18:57 Uhr
Lieben Dank, Biber

So, das muss man also wissen

@echo off << 1. Komme aus Batch3 mit der Sprunganweisung zu :step1 im Gepäck.
call %1 <<-- 2. hier sagt jetzt CALL gehe zu :step1(%1)
goto:eof <<-- 5. Hier die Essenz: Diese Anweisung verhindert nun eine 2. Abarbeitung des Step1 !!! und geht wirklich zum :EOF des File
:step1 <<-- 3.ab hier abarbeiten bis ein GOTO :EOF kommt.
echo irgendwas..
goto :eof <<-- 4.Dieses GOTO :EOF sagt dem Commandointerpreter beende den Call-Aufruf und gehe zur 1.Folgezeile nach dem CALL aus Zeile2
:step2
echo irgendwas ...
goto :eof

Die Abarbeitung eines CALL :Marke beginnt mit der :Marke und Endet bei GOTO EOF.
Um eine weitere Abarbeitung der Folgebefehle nach CALL auszuschließen muß hier
z.B. mit einem zweiten GOTO :EOF der Sprung zum Ende der Unterbatch angewiesen
werden.

Will man das etwas irrige mit dem Goto :EOF einfacher haben,
dann kann man auch so verfahren.

@echo off
rem Batch bat3.bat
cls
echo Aufruf Bat4, Step1
call bat4.bat step1
echo zurück in bat3
echo.
echo Aufruf Bat4, Step2
call bat4.bat step2
echo zurück in bat3
goto ende
:ende

@echo off
rem Bat4.bat
goto %1 <<-- 1.Sprung zur Marke step1
:step1 <<-- 2. Abarbeitung
echo irgendwas ...
goto :eof <<-- 3. diese Anweisung beendet wirklich Bat4 im 1. Aufruf
:step2 <<-- 4. zurück und 2. Aufruf
echo irgendwas ...
goto :eof <<-- 5. diese Anweisung beendet wirklich Bat4 im 2. Aufruf

Ausgabe:
Aufruf Bat4, Step1
irgendwas ...
zurück in bat 3

Aufruf Bat4, Step2
irgendwas ....
zurück in bat3

Zum guten Schluss: Ist %1 nicht oder fehlerhaft gesetzt gibts einen unkontrollierten Abbruch.

Danke an alle, ich schließe diesen Eintrag damit
Gruß volker
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Multitasking bei Massen-Verarbeitung (Batch)
gelöst Frage von clragonBatch & Shell11 Kommentare

Hey Leute, Ich schraube gerade an Geschwindigkeit und Effizienz meiner Batch herum. Ich versuche ziemlich viele Dateien auf einmal ...

Batch & Shell
Fehler bei Verarbeitung von Batch als SYSTEM bei Systemstart
gelöst Frage von mc-doubleyouBatch & Shell4 Kommentare

Hallo zusammen, ich versteh einfach nicht was ich falsch mache. An und für sich würde meine Batch super arbeiten ...

Batch & Shell
Laufwerksbezeichnung (label) in Batch als Variable nutzen
gelöst Frage von tobias.mockBatch & Shell21 Kommentare

Hallo zusammen, ich bin sicher, dass meine Frage für alle Experten hier viel zu simpel ist, ich bin aber ...

Windows Netzwerk
Verarbeitung Gruppenrichtinie
gelöst Frage von Philipp711Windows Netzwerk3 Kommentare

Hallo, ich hätte eine kleine Frage zur Verarbeitungsreihenfolge vom Gruppenrichtlinien. Konkret geht es darum: Wie werden "überschneidende" Einstellungen angewendet? ...

Neue Wissensbeiträge
Linux

Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde

Information von Frank vor 5 StundenLinux12 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 TagBatch & Shell9 Kommentare

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 1 TagHumor (lol)6 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 2 TagenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Heiß diskutierte Inhalte
Router & Routing
Zwei Netzwerke erstellen
Frage von bunteblumeRouter & Routing14 Kommentare

Hallo Zusammen, Ich möchte gerne ein backup von einem bestimmten Folder welcher auf dem Server regelmässig synchronisiert wird auf ...

Off Topic
Fachkräftemangel in Deutschland? - Talentschmiede schreibt alle 2 Tage die gleichen Stellen aus
Frage von Penny.CilinOff Topic12 Kommentare

Hallo, haben wir in Deutschland Fachkräftemangel? Die Talentschmiede schreibt gefühlt alle zwei Tage dieselben Stellen aus. Und das schon ...

Linux
Limux-Ende in München: Wie ein Linux Projekt unter Ausschluss der Öffentlichkeit zerstört wurde
Information von FrankLinux12 Kommentare

Mein persönlicher Kommentar zum Thema "Limux-Ende". Die SPD-Politikerin Anne Hübner hat die Richtung von München ganz klar definiert: "Wir ...

Windows 10
Alle Programme mit bestimmtem Namen automatisch (per GPO) deinstallieren
gelöst Frage von lordofremixesWindows 1012 Kommentare

Hallo zusammen, gibt es eine Möglichkeit, alle Programme beginnend mit z.B. "Dell" im Namen per Script und somit per ...