Batchfile führt nur eine Zeile aus?

guterfrager401  21.08.2022, 01:27

Und was steht in der mirror.bat?

GoodQNextQx 
Fragesteller
 21.08.2022, 01:33

cd F:\folder

robocopy F:\folder D:\temp /MIR

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Der Aufruf einer andern Batch ohne call , wechselt zu dieser Batch und beendet die aufrufende Batch.

Aufrrufer.cmd

@echo off
andereBatch.cmd
echo Dies  wird nicht mehr ausgeführt

wird eine andere Batch/Subroutine mit call aufgerufen, wird die aufrufende Batch nach Beendigung der anderen Batch mit der auf den call folgenden Zeile weitergeführt.

@echo off
call andereBatch.cmd
echo weider  zurück in "%nx0"
pause

oder

@echo off
call :Subroutine
echo weider  zurueck in "%0"
pause
exit /b

:Subroutine
echo ich bin die Subroutine..."%0"

allerdings sollte man dass mit den Calls nicht übertreiben...

set "i=0"
call :rercursFunc
pause
exit /b


:rercursFunc
set /a "i+=1"
echo %i%
call :rercursFunc

endet kläglich 🥱:

C:\Users\Erzesel Secure\Desktop>call :rercursFunc
******  B A T C H R E K U R S I O N  überschreitet Stapellimit    ******
Rekursionszähler=339, Stapelauslastung=90 Prozent
******  B A T C H V E R A R B E I T U N G  A B G E B R O C H E N  ******

...aber weshalb legst Du Dein :

cd F:\folder
robocopy F:\folder D:\temp /MIR

...überhaupt in eine Extra Batch...

Sowas ist purer Unsinn , wegen 2 Zeilen... 😅

noch bevor man eine Extra Batch einsetzt sollte man erwägen ob eine Subroutine oder ein Macro angebracht sein könnte (macros setz man bei häufig auftretenden unübersichtlichen Kommandos ein (sehr schnell)

@echo off
set "MeinMacro=echo ich bin die erste Zeile eines Macros& echo ich bin die zweite Zeile eines Macros"

echo irgendwas
%MeinMacro%
echo blubb
%MeinMacro%
echo blahhh
%MeinMacro%
pause
Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
GoodQNextQx 
Fragesteller
 21.08.2022, 16:35

Die 2 Zeilen waren pseudomäßig, weil ich fand, dass die Frage, was in der anderen Batch drinsteht, überhaupt nix mit dem Problem zu tun haben kann. Das ist natürlich nicht der ganze Code.

Aber den Rest versteh ich jetzt, danke 😅

1
Von Experte Erzesel bestätigt

Statt

F:\scripts\mirror.bat

muss man schreiben

CALL F:\scripts\mirror.bat

Wo man das vergisst, beendet sich das Batch File nach dem Aufruf des Bat Files.

GoodQNextQx 
Fragesteller
 21.08.2022, 11:47

Dank dir vielmals, werd ich gleich testen!

1