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, 4089 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
Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 1 StundeHumor (lol)

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 14 StundenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 14 StundenSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 18 StundenMicrosoft3 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Heiß diskutierte Inhalte
Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server40 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Router & Routing
ISC DHCP 2 Subnetze
gelöst Frage von janosch12Router & Routing19 Kommentare

Hallo, ich betreibe bei mir im Netzwerk einen ISC DHCP Server auf Debian, der DHCP verwaltet aktuell ein /24 ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...