【发布时间】:2015-02-01 19:16:55
【问题描述】:
我正在编写一个批处理脚本来编辑我的 PATH 变量。我的一些路径由变量组成。像这样:%JAVA_HOME%/bin。在我的批处理脚本中,我执行以下操作:
FOR %%A IN ("%PATH:;=";"%") DO ECHO %%A | FINDSTR /I /C:%stringToFind% >NUL && SET found=true || SET newPath=!newPath!;%%A
所以,%newPath% 变量将包含我想要保留的所有路径。
这很好,除非我使用 SETX 将我的 newPath 保存到 %PATH%。我所有的变量都被扩展了。所以,而不是 %JAVA_HOME%/bin;我得到 C:\PROGRA~1\Java\jdk1.8.0_25\bin;
我的问题是如何将变量作为变量保存在路径中。如何在不扩展变量的情况下获得路径。将它们保留为:%whatever%。我用谷歌搜索无济于事。非常感谢任何帮助。
【问题讨论】:
-
我看过这篇文章。我的问题是包含变量的变量。 %PATH% 已经包含变量,所以当我在我的 for 循环中时,%%A 是一个包含如下字符串的变量:%JAVA_HOME%/bin;问题是当我尝试保存此字符串或回显它时,它会评估变量的值。即 C:\PROGRA~1\Java\jdk1.8.0_25\bin;我想保持原样
-
啊,我现在看到了区别,感谢您的澄清。
-
如果可能,请使用
pathman.exe而不是setx.exe。它旨在解决这个问题。
标签: windows batch-file