上下文:我需要调用一个 Windows 批处理脚本,该脚本将通过在其末尾PATH
添加另一个路径“ ”来更新我,但是:xxx
- 没有任何重复
(如果我将 'xxx
' 添加到 PATH 之类的 'aaa;xxx;bbb
',我需要一个更新PATH
的 'aaa;bbb;xxx
') - 没有任何聚合
(我可以重复调用脚本而不会以'aaa;bbb;xxx;xxx;xxx;...
'结束)
我试过的:
以下功能负责处理任何重复并完成工作
:cleanAddPath -- remove %~1 from PATH, add it at the end of PATH
SETLOCAL ENABLEDELAYEDEXPANSION
set PATH=!PATH:%~2=!
set PATH=!PATH:;;=;!
set PATH=%PATH%;%~2
set P=!P:;;=;!
echo %PATH%
echo -------------
ENDLOCAL
exit /b
但是,它需要延迟扩展本地模式,这意味着:在脚本的末尾(或这里,在函数的末尾cleanAddPath
),设置的任何内容%PATH%
都会被丢弃。
我可以要求用户(我为此编写脚本)启动他们cmd
的cmd /V:ON
选项(激活延迟扩展,否则默认关闭),但这不切实际。
如何按照我上面描述的方式修改变量,并且在调用所述脚本后PATH
仍然在我当前的 DOS 会话中更新它?