批处理脚本优化

时间:2013-05-30 06:09:16

标签: batch-file

我正在使用以下代码块处理一些批处理脚本:

echo off 
echo SETTING UP ANT FOR THE BUILD ....
set ANT_HOME=%~dp0%build\apache-ant-1.8.2
set ANT_BIN=%~dp0%build\apache-ant-1.8.2\bin

SET path=%path%;%ANT_BIN%;%ANT_BIN%;

echo PATH: %path%
echo ANT_HOME: %ANT_HOME%
echo ANT_BIN: %ANT_BIN%
echo ANT GOT INSTALLED ....

它帮助我在环境变量中设置我的ant路径的路径。

现在,每次我运行这个bat文件时,都会设置ant的环境变量。

我必须提出一些条件,如果路径已经存在,那么只需跳过设置选项,否则设置选项开始。

我们如何使用bat脚本执行此操作?由于我是bat脚本的新手,我尝试使用以下代码块:

如果“%ANT_HOME%”==“”GOTO NOPATH :YESPATH ...

:NOPATH ...

但问题是我无法检查如何检查以下情况: %ANT_HOME%不为空,但有一些无效的ant目录路径。

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

您可以使用IF EXIST检查文件是否存在。改编自this answer

if exist "%ANT_HOME%" (
    rem file exists
) else (
    rem file doesn't exist
)

答案 1 :(得分:1)

您的脚本中有错误:

SET path=%path%;%ANT_BIN%;%ANT_BIN%;

这应该是:

SET "path=%path%;%ANT_HOME%;%ANT_BIN%"

如果要检查不存在的路径,则应在末尾放置反斜杠。否则,如果存在具有此名称的文件,则也是如此:

if exist "%ANT_HOME%\" (echo %ANT_HOME% found.) else echo Error: %ANT_HOME% not found!

答案 2 :(得分:1)

要避免,将您的条目多次添加到路径中,您应该检查一下。

set path | find "%ANT_HOME%;%ANT_BIN%"
如果已经附加了

,则会给出%errorlevel%'0',如果没有,则为'1'。