Re qdcr:
你的问题可以通过在 :error 设置中断变量来解决,如;
也可以考虑放弃 call :sub 的设计思路,而使用for 的语句块,如;
另外,你的代码结构存在一些问题,在 pause 语句下应该有一句goto :eof,否则:copyFile会在for正常结束后再次被执行,导致程序流程的错误。
@echo off & setlocal EnableDelayedExpansion
for /f %%i in (fileList.txt) do if "!break!"=="" call :copyFile "%%i"
pause
goto :eof
:copyFile
copy "%~1" E:\
if errorlevel 1 goto Error
echo Copy File "%~1" succeed.
goto :EOF
:error
echo Copy File Failed. Program is break.
set break=true
goto :EOF
@echo off
for /f %%i in (fileList.txt) do (
copy "%%i" E:\ >nul
if errorlevel 1 echo Copy File Failed. Program is break. & pause & goto :eof
echo Copy File "%%i" succeed.
)
pause