Batchfile führt nur eine Zeile aus?
Hallo,
ich habe ein Batchfile das so aussieht:
F:\scripts\mirror.bat
echo Script-Call successful!
Allerdings führt er nur das Batchfile in der ersten Zeile aus, den Rest ignoriert er.
Wenn ich den Code aus mirror.bat direkt reinkopiere, geht alles problemlos.
Jemand ne Idee dazu? :)
Und was steht in der mirror.bat?
cd F:\folder
robocopy F:\folder D:\temp /MIR
2 Antworten
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
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 😅
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.