2013-10-05 43 views
1

因此,我想檢查一個Windows批處理文件中是否存在環境變量,如果存在,它是否指向有效路徑。在Windows批處理文件中將傳遞的函數參數作爲環境變量處理

我將兩個變量傳遞給函數,第一個是表示環境變量的字符串,第二個是將其設置爲的默認路徑。我想檢查一下,以確定它尚未設置。如果它已經設置好了,我只想檢查路徑是否正常,並報告不是。這是我有:

CALL:SET_PATH MY_ENV "C:\My\Path" 

:SET_PATH 
IF NOT DEFINED %1 (
    IF EXIST %2 (
    ECHO ______________________________________________ 
    ECHO %1=%2 
    SETX %1 %2 
) ELSE (
    ECHO %1 environment variable was not set, the path did not exist: 
    ECHO %2 
) 
) ELSE (
    IF NOT EXIST %1 (<-- How do I evaluate this as an environment variable instead of a string so I can get the path? 
    ECHO %1 environment variable points to a path that does not exist: 
    ECHO %1 <-- Same thing here 
) 
) 
GOTO:EOF 

預先感謝任何幫助。

回答

1
@ECHO OFF &SETLOCAL 
CALL:SET_PATH MY_ENV "C:\My\Path" 
GOTO:EOF 

:SET_PATH 
IF NOT DEFINED %1 (
    IF EXIST %2 (
    ECHO ______________________________________________ 
    ECHO %1=%2 
    SETX %1 %2 
) ELSE (
    ECHO %1 environment variable was not set, the path did not exist: 
    ECHO %2 
) 
) ELSE (
    setlocal enabledelayedexpansion 
    IF NOT EXIST "!%~1!" (
    ECHO %1 environment variable points to a path that does not exist: 
    ECHO !%1! 
) 
    endlocal 
) 
GOTO:EOF 
+0

謝謝,它工作得很好。 – Deruwyn

相關問題