无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 24014|回复: 11
打印 上一主题 下一主题

DOS有奖问答No5:关于Terminate batch job(Y/N)

[复制链接]
1#
发表于 2006-3-5 13:22:11 | 显示全部楼层

DOS有奖问答No5:关于Terminate batch job(Y/N)

参与一下
首先,我还没法直接回答这个问题。
其次,我对2、3楼的回答发表一下看法:
2楼的回答相当于应答文件,一般用于批处理执行过程中对特定命令的自动回答,如我以前做过一个快速格式化命令
qformat.bat
:begin
if "%1"=="" goto end
echo format partition %1
format %1 /u/q/v:none < y.txt
shift
goto begin
:end
echo format ok
y.txt
y(此处有回车)
执行时运行 qformat d: e:,不需要人工参与,但对于楼主提出的问题,应属于批处理过程的突发事件,不应该单一用应答文件来处理,况且应答文件还有一个弱点,就是应答文件的内容必须完全满足其回答命令的参数需求,如上述的y.txt,如果只输入y而不加回车,就会导致命令死锁,这涉及到命令重定向的问题,再说就多了。
3楼的回答同二楼类似,都属于输出重定向,之所以不行,是因为只给命令转入了yes的回答,但没加回车,而Terminate batch job(Y/N)的提示除了要求输入y/yes,还要回车确认的。
最后发表一下我的意见
我不清楚楼主问这个问题的本意,但我在DOS命令中常出现这种情况一般是在程序需要应答的时候,如上面的快速格式化程序,一般我会加上提示:
echo this program will format the partition %1
echo if you sour to do that, press ENTER to continue
echo else you can press CTRL + C to break the job.
pause > nul
format %1 /u/q/v:none
这样在格式化命令前,会要求用户确认,按回车执行格式化,按CTRL + C中止批处理,会提示Terminate batch job(Y/N),按y回车则退出。
如果在上述情况下,想让程序不出现Terminate batch job(Y/N)的提示,可以考虑其它方法,如:
echo this program will format the partition %1
set /p ans=do you sure to do that?[y/n]
if /i "%ans%" equ "y" then
(do format)
else
(don';t format)
但echo /p的命令在win98之前(含)的DOS版本中不支持。
当然也可以借助其它命令,如choice
choice do you soue to do that?
if errorlevel 2 then goto end
errorlevel 2 则表示用户选择了n,choice.com命令属于DOS的外部命令,在一般的系统盘中可以找到,具体用法可参照其帮助。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-16 00:15

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表