簡體   English   中英

批處理文件中的PATH變量未更新

[英]PATH Variable is not updating in Batch file

首先,謝謝您的任何建議。 在對例程進行一些調整之后,代碼如下所示:

REM ========================================================================
REM Parses out Path entries
REM ======================================================================= 
    SETLOCAL
    SET TEMPPATH="%PATH%"
    SET NEWPATH =""
    CALL :parse %TEMPPATH%
    GOTO :NEXT

:PARSE
    SET list=%1
    SET list=%list:"=%
    FOR /F "tokens=1* delims=;" %%a IN ("%list%") DO (
        REM ECHO A: %%a
        REM ECHO B: %%b
        IF NOT "%%a"=="%VAR_JAVA_HOME%" CALL :SUB "%%a"
        IF NOT "%%b"=="" CALL :PARSE "%%b"   
    )
    EXIT /b

:SUB
    ECHO Passed into subroutine: %1
    IF DEFINED NEWPATH IF "%NEWPATH%" == "" (
        SET NEWPATH=%1;
        ECHO IN SUB: %NEWPATH%
    )
    IF DEFINED NEWPATH IF "%NEWPATH:~0,1%, %1" == "" (
        SET NEWPATH=%NEWPATH%;%1
        ECHO Updated NEWPATH: %NEWPATH%
    )
    REM ECHO New path variable: %NEWPATH% 
    EXIT /b

:NEXT
    ECHO New path variable: %NEWPATH% 
    ECHO Removed Java entries from the path...
    ENDLOCAL

該例程正在編譯並運行。 路徑中的各個條目均已正確解析,並傳遞到子例程中。 但是,新路徑尚未創建或正在更新。

Passed into subroutine: "C:\Windows\system32"
Passed into subroutine: "C:\Windows"
Passed into subroutine: "C:\Windows\System32\Wbem"
Passed into subroutine: "C:\Windows\System32\WindowsPowerShell\v1.0\"
New path variable:<nothing here>

任何意見將不勝感激。

拉斯

if defined NEWPATH就永遠不會進入分支,因為沒有名為NEWPATH變量。 您在下面的行中有多余的空間:

SET NEWPATH =""

因此,變量名稱實際上是NEWPATH (在末尾包含一個空格)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM