Windows CMD - 如何从批处理文件中重置路径变量?

7
我有一个批处理文件,通过在一些地址前面添加内容来修改PATH变量。当用户注销-登录时,PATH会被重置为最初的值(在批处理文件运行之前)。这种行为是可以接受的。
然而,如果批处理文件运行超过一次,则相同的值会被重新添加,导致我得到一个过长、冗余的PATH变量,在每次批处理运行后变得更长。
我想将变量重置为用户登录时的值,在添加值之前。我认为解决方案是将原始值写入临时文件并读回,但是否有更好的方法呢?
3个回答

7

不要将原始值写入临时文件,可以将其写入另一个环境变量:

if not defined ORIGINAL-PATH set ORIGINAL-PATH=%PATH%
set PATH=c:\extra\stuff;%ORIGINAL-PATH%

但最好明确检查您想要的字符串是否已经在PATH中存在,例如:

echo %PATH% | findstr /c:"c:\extra\stuff;" > nul || set PATH=c:\extra\stuff;%PATH%

这实际上是我最终所做的。谢谢! - Ben
这样做的额外好处是,如果你搞砸了那些“额外的东西”..你可以修复它。我第一次做的时候忘记了尾随的“\”。感谢这个简单但有效的提示! - granadaCoder

6
在批处理文件的顶部放置@SETLOCAL
退出批处理文件时,环境所做的任何更改都会被还原。
运行setlocal /?以获取更多详细信息。

1

我已经寻找了很长时间类似问题的解决方案。最终,我使用了从以下网址下载的pathmgr.cmd:

http://gallery.technet.microsoft.com/Batch-Script-To-Manage-7d0ef21e

要使用它来清理用户路径,可以从命令行中使用以下选项:

pathmgr.cmd /clean /user /p /y

还有许多其他有用的选项可供使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接