使用 bat 文件设置系统变量

Posted

技术标签:

【中文标题】使用 bat 文件设置系统变量【英文标题】:Setting system variables using bat file 【发布时间】:2021-04-16 01:05:05 【问题描述】:

我想编写一个 bat 文件来在任何 Windows 系统上设置系统变量。我制作的软件需要设置路径,而不是要求用户处理我听说我们可以使用 bat 文件完成此任务的方法,所以我尝试了多种设置路径的方法,其中大多数是所有现有路径的副本,而不是添加新路径,有时它会删除所有路径并仅保留新路径

setx Path "%Path%;c:\ffmpeg"

复制所有现有的路径变量

我确实阅读了有关此问题的多个 *** 查询,但没有任何帮助 如果您在您的系统上进行测试以检查 请先保存/复制所有路径 谢谢 埃斯瓦尔

【问题讨论】:

既然你说要设置系统变量,我强烈建议你使用/M选项。 请注意,setx 会更改未来会话的变量,但不会更改当前会话。 好吧,再一次,在修改持久存储的系统用户时使用%PATH%是一个不行-永远不会 环境变量 PATH 由您使用命令行修改 user PATH。如果你已经在你的机器上执行了那个命令行,那么你已经破坏了 user 环境变量PATH。我建议阅读我在System cannot find path even though it exists in paths 上的回答,其中包含如何在损坏后修复PATH 配置的说明。 我建议接下来阅读What is the reason for "X is not recognized as an internal or external command, operable program or batch file"?,它非常详细地解释了Windows和Windows命令处理器对PATH的管理和使用。然后阅读Why are other folder paths also added to system PATH with SetX and not only the specified folder path?和How to search and replace a string in environment variable PATH? 另请参阅Adding the current directory to Windows path permanently 和最后但并非最不重要的How can I use a .bat file to remove specific tokens from the PATH environment variable?,以从 usersystem 环境变量路径中删除文件夹路径.如果批处理文件将文件夹路径添加到 usersystem 环境变量路径,则应该还有一个批处理文件从环境变量中删除文件夹路径。 【参考方案1】:

我不建议你弄乱系统变量,但如果你想从 cmd 存储路径使用

setx Path "%Path%;C:\your\path\here\" C:\ffmpeg\bin

我在 Windows 10 上进行了测试,它对我有用 希望它也适用于你!

【讨论】:

但它也会产生重复但至少它添加了所需的东西谢谢 Windows 中的路径是系统+用户路径。这样做可以使路径这么长没有路径工作...... 注意所有读者:此代码正在破坏 user 环境变量PATH,不应在命令行或批处理中使用文件。参见例如Why are other folder paths also added to system PATH with SetX and not only the specified folder path? 它解释了此命令行损坏 user PATH 的原因,并包含一个更好的解决方案的示例。【参考方案2】:

不会建议你弄乱系统变量,但如果你想为你的程序存储路径,这里有一个脚本可以做到这一点但在这样做之前我会鼓励你为存储在系统变量%Path%中的文件和所有路径进行备份,如果发生某些事情,请阅读this,但无论如何这里有一个对我有用的脚本:

@echo off
echo validating Path
ping localhost -n 2 >nul
set "store_path=Path to your program "
rem /M to set the variable in system wide environment
setx Path "%path%;%store_path%"
setx Path "%path%;%store_path%" /M

我只是用旧路径存储新路径。

【讨论】:

我不知道有什么问题,但即使使用您的代码,它也只会创建重复/多个副本,并且并不总是有效 @EswarT 尝试在最后 2 个命令中不带分号的情况下使用它,我认为您使用的是 Windows 10,这就是它无法正常工作的原因。我在 Windows 7 上检查了它 是的,我正在使用 Windows 10,即使尝试也没有用 @Justaus3r,你真的看过 Mofi 的任何 cmets。很明显,这不是执行任务的方式,因为它仍然会重复一些条目,(除非用户没有定义的 %Path% 变量)。他们甚至提供了几个链接来解释原因! @Compo 对于您的友好信息,它没有复制我的任何条目。这就是为什么我放置脚本并指定它工作的操作系统版本,并在使用它之前发出警告,我知道它是这不是存储路径的理想方式,这就是我警告它的原因!....

以上是关于使用 bat 文件设置系统变量的主要内容,如果未能解决你的问题,请参考以下文章

.bat学习-基础语法

电脑中打不开bat文件怎么办

fluent的UDF环境变量设置问题

通过bat脚本配置系统环境变量

java环境变量的设置 各环境变量的作用

bat脚本如何获取环境变量字面值(请看问题说明再回答)?