为什么批处理加了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。请问问题在哪里呢? 展开
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。请问问题在哪里呢? 展开
1个回答
展开全部
代码有个明显错误,for /f "usebackq delims=" 应改成 for /f "delims="
由于我不清楚ant是怎么运行的, 如果仍有问题,把 ant -f ... 这句前加call 写成call "" ant -f ... 这会在cmd外另外启动ant,且不等其运行完就会继续执行bat后续命令,如需要等它运行完再执行后续命令,可加上等待参数写成call "" /wait ant -f...
由于我不清楚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的等效
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询