为什么批处理加了pause也自动关闭

代码如下:setlocalenabledelayedexpansion@echooffclstitleconvertxmltoditaCOLOR0Eecho[INFO]:... 代码如下:
setlocal enabledelayedexpansion
@echo off
cls
title convert xml to dita
COLOR 0E
echo [INFO]: Start conversion.....
if EXIST out\*.xml ( del out\*.xml ) else (
echo [INFO]: The out directory is empty.
)
for /f "usebackq delims=" %%i in (`dir /a/b/s in\*.xml`) do (
echo [INFO]: Converting file "%%i"
ant -f build.xml -Dinput.file="%%i"
)
pause
endlocal
这个批处理运行后仍然会关闭窗口,虽然用了PAUSE。请问问题在哪里呢?
展开
 我来答
yyykkkyyyy
2014-04-22 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3313万
展开全部
代码有个明显错误,for /f "usebackq delims=" 应改成 for /f "delims="
由于我不清楚ant是怎么运行的, 如果仍有问题,把 ant -f ... 这句前加call 写成call "" ant -f ... 这会在cmd外另外启动ant,且不等其运行完就会继续执行bat后续命令,如需要等它运行完再执行后续命令,可加上等待参数写成call "" /wait ant -f...
追问
首先去掉usebackq反而会出错,因为后面有个(`dir /a/b/s in\*.xml`)命令,这里使用了反引号。

第二,加了call,报错。
如果把ant那一行注释掉,就不会自动关闭了。我认为问题出在ant那一行,但是具体什么原因还是不清楚。
追答
哦,为什么要加反引号,不是自找麻烦吗? 我还以为是加的单引号,加单引号就不要usebackq了
第二句是我写时失误,应该是start "" /wait ant -f... 本来我是想再说如果ant 不是直接的exe文件而是一个批处理时要加 call 才能返回想着想着估计可能性不大就写错了,其实加call 也行那就不要加 空引号和/wait 它本身就是等其结束才返回的,就是说改成call ant -f... 和start "" /wait的等效
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式