Answers:
就像其他任何环境变量一样,使用SET
:
SET PATH=%PATH%;c:\whatever\else
如果要先内置一点安全检查,请先检查新路径是否存在:
IF EXIST c:\whatever\else SET PATH=%PATH%;c:\whatever\else
如果您希望该文件位于该批处理文件的本地,请使用setlocal
:
setlocal
set PATH=...
set OTHERTHING=...
@REM Rest of your script
仔细阅读setlocal
/ 的文档endlocal
,并查看该站点上的其他参考- 函数也很有趣,语法也很棘手。
“ 语法”页面应该使您入门。
SET
在执行任何脚本之前,您确实应该了解这些知识。
SETLOCAL
它,最多也只是用于单个命令提示符会话-如果您从多个批处理文件中执行此操作,并使用EXIT /B %N%
,则SETLOCAL
基本上只是在脚本退出时转储您的更改。:-/
有一个重要的细节:
set PATH="C:\linutils;C:\wingit\bin;%PATH%"
不起作用,而
set PATH=C:\linutils;C:\wingit\bin;%PATH%
作品。不同之处在于报价!
UPD还可以看到venimus的评论
SET "PATH=...%PATH%"
路径中存在的其他空间会导致错误或行为异常。用这样的引号引起来的包装将不包括这些引号,但可以正确设置该变量。同样适用于任何其他env变量。
没错,但这并不能永久更改它,而只是针对当前命令提示符,如果您想永久更改它,则必须使用例如:
setx ENV_VAR_NAME "DESIRED_PATH" /m
这将永久更改它,是的,您可以用另一个批处理脚本覆盖它。
/m
需要之后setx
?
/m
末尾时,DESIRED_PATH
仅在当前用户的末尾添加了/ m。
echo %path%
,您将获得当前加载的路径。您需要将用户和系统环境变量彼此区分开。然后,您可以手动将它们应用到正确的位置。
setlocal
到批处理文件,则该路径仅在文件中可见