中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-02 19:43
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 关于强制程序退出 查看 2,188 回复 16
16 发表于 2006-07-29 15:46 ·  中国 山西 运城 中移铁通
元老会员
★★★★
Batchinger
积分 4,432
发帖 1,512
注册 2002-10-18 00:00
23年会员
UID 19
性别 男
状态 离线
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
※ Batchinger 致 Bat Fans:请访问 批处理编程的异类 ,欢迎交流与共享批处理编程心得!
17 发表于 2007-08-15 08:49 ·  中国 浙江 杭州 电信
高级用户
★★
积分 537
发帖 219
注册 2007-08-04 09:43
18年会员
UID 94620
性别 男
来自 杭州--半山
状态 离线
又学到东西了
论坛跳转: