我需要评估某些命令所引发的命令&minfuift oc-env'其中有 PATH 。
但是,它似乎覆盖了整个 PATH 变量。
C:\Users\budhram>echo %PATH%
C:\Program Files\Docker\Docker\Resources\bin;C:\Users\budhram\AppData\Local\Temp;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;.....
C:\Users\budhram>minishift oc-env
SET PATH=C:\Users\budhram\.minishift\cache\oc\v1.5.0;%PATH%;
REM Run this command to configure your shell:
REM @FOR /f "tokens=*" %i IN ('minishift oc-env') DO @%i
C:\Users\budhram>SET PATH=C:\Users\budhram\.minishift\cache\oc\v1.5.0;%PATH%;
C:\Users\budhram>echo %PATH%
C:\Users\budhram\.minishift\cache\oc\v1.5.0;C:\Program Files\Docker\Docker\Resources\bin;C:\Users\budhram\AppData\Local\Temp;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;....
C:\Users\budhram>@FOR /f "tokens=*" %i IN ('minishift oc-env') DO @%i
C:\Users\budhram>echo %PATH%
C:\Users\budhram\.minishift\cache\oc\v1.5.0;%PATH%;
知道我们该怎么做吗?
这个答案https://stackoverflow.com/a/9370376/1120530也建议使用setlocal enableDelayedExpansion
,这似乎在我的案例中不起作用。
答案 0 :(得分:1)
运行时
@FOR /f "tokens=*" %i IN ('minishift oc-env') DO @%i
do
子句将执行
SET PATH=C:\Users\budhram\.minishift\cache\oc\v1.5.0;%PATH%;
这似乎是正确的,但问题是在%i
扩展到指定的命令后,没有第二次扩展将%PATH%
转换为变量中的值。
您可以尝试使用
@FOR /f "tokens=*" %i IN ('minishift oc-env') DO @call %i
call
命令将强制执行第二个解析阶段,以扩展%PATH%
引用。