首先,让我开始通知您,以这种方式添加到PATH变量仅适用于正在运行的会话。一旦cmd会话关闭,该变量返回到其先前的值。
这里有一个建议,一个追加每次添加一个:
SET "ToAdd=\\somewhere\Tools\strawberryperl\perl\site\bin;"
SET "ToAdd=%ToAdd%;\\somewhere\Tools\strawberryperl\perl\bin;"
SET "ToAdd=%ToAdd%;\\somewhere\Tools\strawberryperl\c\bin;"
SET "ToAdd=%ToAdd%;\\somewhere\Tools\KDiff3"
SET "PATH=%PATH%;%ToAdd%"
顺便说一句,如果你希望添加到超越正在运行的会话环境变量那么你忽略的人建议你用的是很重要SETX而不是SET。 (该变量将被截断为1024字节,因此会对其进行破坏)。您的最佳解决方案将涉及编辑注册表,并可能使用内置工具(如PowerShell)。
编辑
这显示在我的评论中提到的方法,并使用相同的结构,脱线的回答是:
C:\ MYDIR \ Paths.txt
\\somewhere\Tools\strawberryperl\perl\site\bin
\\somewhere\Tools\strawberryperl\perl\bin
\\somewhere\Tools\strawberryperl\c\bin
\\somewhere\Tools\KDiff3
批处理文件
@Echo Off
SetLocal EnableDelayedExpansion
For /F "UseBackQDelims=" %%A In ("C:\MyDir\paths.txt") Do Set "Path=!Path!;%%~A"
Echo(%Path%
EndLocal
Timeout -1
这意味着你只需要每次都包含for循环而不是添加每个路径。
我认为你必须把领先';'那里Path变量通常对于没有一个结束。你有没有试过用'echo%PATH%'检查变量的值? – geisterfurz007
删除缩进空格,它将工作... – aschipfl