批处理文件中的ant命令执行后会忽略后续命令。

12

以下是我正在处理的批处理脚本代码块:

ECHO off 

IF NOT EXIST "%ANT_HOME%" (   

    SET ANT_HOME=%~dp0%build\apache-ant-1.8.2
    SET ANT_BIN=%~dp0%build\apache-ant-1.8.2\bin

    SET PATH | FIND "%ANT_HOME%;%ANT_BIN%"
)
cd "build\Run"
ant -q

cd ../..
echo "Program Terminated!"
exit

现在,我的 build.xml 文件位于 build\Run 文件夹内,所以在运行 ant -q 命令之前,我首先要导航到 build/Run(注意:我不想改变这种导航方法)。

一旦执行 ant -q 命令,以下事情就会发生:

  1. 将环境变量设置为条件。
  2. 切换到 build\Run 目录。
  3. 由于我的 build.xml 在 Run 目录中,因此 ant -q 命令可以正常运行。
  4. Ant 已经正确执行并退出脚本。
  5. 现在我的当前路径将是 build\Run!正确 <= 在 ant 终止后我不希望出现这种情况,相反我想要退出 build\Run,这就是为什么我使用 cd../.. 的原因。

但问题是,在 ant -q 后我无法执行命令。这是因为程序控制权从 BATCH => ANT 转移。

是否有任何方式可以从 bat 脚本本身执行 ant 命令后的命令?


1
请注意,SET PATH | FIND“!ANT_HOME!;!ANT_BIN!”不会设置您的路径 - 它只会告诉您是否存在添加内容... - Stephan
1个回答

21

你可能会发现正在运行的ant本身就是一个批处理文件,如果是这种情况,它只会链式调用该文件(不返回)。

你应该尝试使用这个:

call ant -q

调用批处理文件(与链式调用不同)将正确返回到调用它之后的点。


太棒了!一直在努力尝试弄清楚我的脚本出了什么问题...你是我的救星T^T - Surya Wijaya Madjid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接