|
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的外部命令,在一般的系统盘中可以找到,具体用法可参照其帮助。
|
|