[英]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.