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

Mitglied: Batchfan

Batchfan (Level 1) - Jetzt verbinden

23.11.2011, aktualisiert 21:33 Uhr, 4103 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
Windows Server

SBS 2011: Installation von KB4457144 schlägt beim Reboot fehl - Von Dienst gesperrte Schriftart ursächlich

Tipp von the-buccaneer vor 8 StundenWindows Server1 Kommentar

Moinsen zusammen! Das hat mich einige graue Haare gekostet: Ein SBS 2011 weigerte sich schon im August, das monatl. ...

Windows Netzwerk
Browser-Lags und IPv6
Erfahrungsbericht von NixVerstehen vor 14 StundenWindows Netzwerk1 Kommentar

Hallo zusammen, wir betreiben als kleines Speditionsunternehmen ein überschaubares Windows-Netzwerk mit Win10-Clients sowie einem Server 2016 Essentials als "eierlegende ...

Humor (lol)

Erstaunlich, Windows mit extremer Laufzeit (Server) lol

Tipp von mathu vor 17 StundenHumor (lol)5 Kommentare

Was es so alles gibt. :-)

Windows Netzwerk

CGM Praxisarchiv funktioniert auf Clients nach Update auf 4.14 nicht mehr

Tipp von MOS6581 vor 1 TagWindows Netzwerk

Moin, ein Kunde setzt das CGM-Praxisarchiv ein. Mehrplatzinstallation mit SQL-Server. Nachdem letzte Woche auf die 4.14 aktualisiert wurde, funktionierte ...

Heiß diskutierte Inhalte
Hyper-V
Windows Serer 2016 Standard virtualisieren
gelöst Frage von fritte87Hyper-V33 Kommentare

Hallo zusammen, ich muss für eine kleine Firma ein entsprechendes neues kleines Konzept bauen. Ich habe einen Server Standard ...

LAN, WAN, Wireless
Kombiniere mehrere 4G Router zu einem Netzwerk - Anwendung kleine LAN (10-20 Leute)
Frage von HulkTheHeroLAN, WAN, Wireless24 Kommentare

Guten Mittag liebes Administrator - Fourm, ich hoffe ich habe das richtige Thema ausgewählt - ansonsten bitte gerne verschieben ...

Windows Server
Fileserver von 2012 R2 auf 2012R2
gelöst Frage von ThabeusWindows Server23 Kommentare

Moin moin, leider war in der Vergangenheit der Fokus des Betriebs nicht auf Langfristigkeit ausgelegt. Daher stehe ich jetzt ...

Router & Routing
Größere Zahl VPN-Verbindungen mit Fritz-Box einrichten
Frage von miscmikeRouter & Routing15 Kommentare

Hallo Zusammen, ich supporte verschiedene Kunden mit bestehenden LAN-LAN-Kopplungen via FritzBox (7490, FritzOS 7.01) . Anwendungen sind z.B. Kaspersky-KSC ...