在输入命令时, 在命令行后面加上:"|echo Yes"
小儿科的问题。作者: magictek 时间: 2006-1-11 01:46 标题: DOS有奖问答No5:关于Terminate batch job(Y/N) 楼上朋友的方法,我测试过了,不行作者: Turboy 时间: 2006-2-23 22:55 标题: DOS有奖问答No5:关于Terminate batch job(Y/N) 我没有试过,但觉得用那些可以写键盘缓冲区的工具应该可以,可是不知道DOS在处理错误时是否清空了键盘缓冲区。作者: sidac 时间: 2006-3-5 13:22 标题: 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的外部命令,在一般的系统盘中可以找到,具体用法可参照其帮助。 作者: magictek 时间: 2006-6-2 23:13
顶起来,不错的帖子,论坛改版后就沉下去了作者: wolfkin 时间: 2006-8-6 18:26
这个问题困惑我很久了
2楼的方法只是表面有效
实际使用中多按几次就会出错中止的
不过这个答案还是符合lz本意的
在这里我想请教下
怎么彻底的屏蔽掉ctrl+c呢
因为我不想别人结束批处理作者: mscmd.exe 时间: 2009-6-1 19:56
可以的! 此问题我遇见过!作者: vou 时间: 2009-6-3 11:02
4年前的帖子,lz应该发布答案了吧作者: dos时代菜鸟 时间: 2009-6-3 14:23
用ansi.sys 可以重新定义 Ctrl+Break 键值,但是 Ctrl+c 就不知道了。
解开压缩包
break.ZIP(77.5 KB, 下载次数: 136)