2013-05-30 229 views
1

我工作的一些批處理腳本下面的代碼塊:批處理腳本Optmization

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 .... 

它幫我把我的路徑設置爲我的環境變量螞蟻路徑。

現在,每次我運行這個bat文件,它都會爲ant設置環境變量。

我必須提出一些條件,如果路徑已經存在,那麼只需跳過設置選項,否則設置選項開始。

我們如何使用bat腳本來做到這一點?由於我是新來的蝙蝠劇本我試着用下面的代碼塊:

IF 「%ANT_HOME%」 == 「」 GOTO NOPATH :YESPATH ...

:NOPATH ...

但這裏的問題是我無法得到如何檢查以下情況: %ANT_HOME%不是空白的,但有一些無效的ant目錄路徑。

任何人都可以幫助我嗎?

+0

可能重複的[如何驗證文件是否存在於Windows .BAT文件?](http://stackoverflow.com/questions/3022176/how-to-verify-if-a-file-exists-in -a-windows-bat-file) – sashoalm

回答

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! 
+0

我敢肯定,你的意思是'Backslash',而不是'Backspace';-) – Stephan

+0

謝謝:你完全正確。我需要更多的咖啡.... :) – Endoro

+0

謝謝,工作得更好! –

1

您可以使用IF EXIST來檢查文件是否存在。從this answer改編:

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

好的。讓我試試這個。 –

1

要避免,多次添加您的項目的路徑,你應該檢查這一點。

set path | find "%ANT_HOME%;%ANT_BIN%" 

會給你%errorlevel%的'0',當它已經附加,或'1'的時候不是。

+0

無論如何:%cmd%在cmd會話結束時被刪除,如果沒有存儲在註冊表中。 – Endoro