![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-09-25 16:43 |
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,274 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 关于强制程序退出 |
| 可打印版本 2,446 / 16 |
| 第1楼 qdcr | 发表于 2006-07-07 15:14 |
| 初级用户 发帖 32 积分 120 | |
|
关于强制程序退出 @echo off
for /f %%i in (fileList.txt) do call :copyFile "%%i" pause :copyFile copy "%~1" E:\ if errorlevel 1 echo Copy File Failed. && goto error if errorlevel 0 echo Copy File "%~1" succeed. goto :EOF :error goto :EOF fileList.txt的内容为: E:\test\1.bmp E:\test\22.bmp(此文件不存在) E:\test\3.bmp 希望程序在遇到错误后能中止运行,而上面的代码是遇到错误后,打印错误信息并继续执行。如果在error后面用exit的话,则是关闭dos窗口,显得不太友好. 请教的问题: 如果出错,如何打印出错误信息后,返回到命令行窗口。 |
|
| 第2楼 fastslz | 发表于 2006-07-07 15:39 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
| 第3楼 bagpipe | 发表于 2006-07-07 15:51 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
哦,这样啊,把:ERROR下面的GOTO :EOF更换成 EXIT /B试试............嘎嘎.........
|
|
| 第4楼 qdcr | 发表于 2006-07-07 16:07 |
| 初级用户 发帖 32 积分 120 | |
|
呵呵,谢谢fastslz,除了tee之外没有什么其他的解决方法了么?
|
|
| 第5楼 qdcr | 发表于 2006-07-07 16:11 |
| 初级用户 发帖 32 积分 120 | |
|
to bagpipe:
试过这个方法,虽然最终能返回命令行,但是for循环仍然继续执行,没有中止。 |
|
| 第6楼 fastslz | 发表于 2006-07-07 16:19 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
我不理解goto :EOF什么意思,所以.....不好说
[ Last edited by fastslz on 2006-7-7 at 16:24 ] |
|
| 第7楼 qdcr | 发表于 2006-07-07 16:36 |
| 初级用户 发帖 32 积分 120 | |
|
to fastslz: 谢谢你的回复。
是我在上面的帖子中没说清楚,这里澄清一下。 当出现copy出错时,希望不再执行后面的动作,也就是退出for 循环,一直没有找到好的方法. |
|
| 第8楼 fastslz | 发表于 2006-07-07 18:25 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
据我所知for肯定是循环,就不能单独列出来后COPY吗?bagpipe高手都没法我更不行。或者把你的要求和要达到的目的说一下,看你的批处理越看越没头绪,毕竟每个人的思路都不一样。
另外fileList.txt的内容是固定的吗? |
|
| 第9楼 qdcr | 发表于 2006-07-07 19:39 |
| 初级用户 发帖 32 积分 120 | |
|
fileList.txt中的内容不是固定的,我所要实现的功能是批处理拷贝某文件中记录的一系列文件,过程中有一个文件拷贝出错,文件拷贝过程将中止,程序退出。
谢谢 [ Last edited by qdcr on 2006-7-7 at 19:42 ] |
|
| 第10楼 kcdsw | 发表于 2006-07-07 20:01 |
| 中级用户 发帖 179 积分 404 | |
|
你干吗还在 error的标号后 执行goto :eof
这本身就被包含在for的循环中了 你当然跳不出来 这样就跳出下一个循环了 你可以在endfor后继续执行其他命令了 [ Last edited by kcdsw on 2006-7-7 at 20:08 ] |
|
| 第11楼 fastslz | 发表于 2006-07-07 21:51 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
10楼kcdsw的改成if errorlevel 1 从for循环中跳出来了,强......
|
|
| 第12楼 qdcr | 发表于 2006-07-10 13:19 |
| 初级用户 发帖 32 积分 120 | |
|
这样的退出是关闭整个cmd窗口了,不太友好,希望能够返回cmd窗口而不是关闭。
|
|
| 第13楼 electronixtar | 发表于 2006-07-10 16:55 |
| 铂金会员 发帖 2,672 积分 7,493 | |
|
要返回就运行cmd
|
|
| 第14楼 bagpipe | 发表于 2006-07-10 17:17 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
真TMD不好伺候,,,EST我们就别管了
|
|
| 第15楼 voiL | 发表于 2006-07-27 04:32 |
| 中级用户 发帖 189 积分 384 | |
Originally posted by qdcr at 2006-7-10 13:19: 要想调用BAT文件本身,在开头先SET批处理自身的路径 注:cls有助于清除上次运行的信息,当然,如果你是有意让它显示的话可以删除掉. 然后在最后可以在error后面加入 来实现. 再注:%mypath%后面的exit一定要加上,不然很可能会导致程序死循环. |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |