中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
« [1] [2] »
作者:
标题: 关于强制程序退出 上一主题 | 下一主题
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 16 楼』:  

Re qdcr:

     你的问题可以通过在 :error 设置中断变量来解决,如[1];

     也可以考虑放弃 call :sub 的设计思路,而使用for 的语句块,如[2];

     另外,你的代码结构存在一些问题,在 pause 语句下应该有一句goto :eof,否则:copyFile会在for正常结束后再次被执行,导致程序流程的错误。

[1]
@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
[2]
@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:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-7-29 15:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
junchen2
高级用户





积分 537
发帖 219
注册 2007-8-4
来自 杭州--半山
状态 离线
『第 17 楼』:  

又学到东西了

2007-8-15 08:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: