0

我有一个list.txt由目录组成的文本文件,如下所示。

C:\Program Files\gs\gs9.07\bin
C:\Program Files (x86)\Adobe\Reader 11.0\Reader
C:\Program Files (x86)\Google\Chrome\Application
C:\Program Files (x86)\cwRsync\bin
C:\Program Files (x86)\PDF Labs\PDFtk Server\bin

我想创建一个批处理文件,将每个项目永久附加list.txt到系统PATH环境变量中。

我的失败尝试如下。

rem batch.bat
for /f "delims=" %%x in (list.txt) do (setx PATH "%PATH%;%%x" /m)

batch.bat我以管理权限调用,但没有附加到PATH. 你能帮我解决吗?

4

1 回答 1

1
@ECHO OFF
setlocal
SET testvar=%PATH%
FOR /f "delims=" %%x IN (list.txt) DO (
CALL SET testvar=%%testvar%%%%x;
)
setx testvar "%testvar%"

好吧-这为将来的调用设置了“testvar”-我不想更改我的PATH; 现有实例,包括当前实例,将保持不变(如文档所述。)

您的实现的问题在于,当解析 FOR 循环时,在执行%var%循环之前,任何内容都会被其当时存在的值替换。结果,您的命令被执行为

setx path "(yourexistingpath);C:\Program Files\gs\gs9.07\bin"
setx path "(yourexistingpath);C:\Program Files (x86)\Adobe\Reader 11.0\Reader"
...

应该根据附加的文件(仅)中的最后一行设置您的路径。

...当然,在 CURRENT 环境中设置所需要做TESTVAR的就是删除SETLOCAL(实际上只是为了在测试时保持我的环境清洁)或添加一行

ENDLOCAL&set testvar=%testvar%
于 2013-03-16T16:47:40.087 回答