如何让bat文件设置的环境变量永久生效?

如何让bat文件设置的环境变量永久生效?,第1张

可以使用 setx 小工具实现。你可以搜一下 setx

setx 简介

这个命令行工具提供了一种批量修改环境变量的方法,同时不需要使用任何编程方法或者是脚本。此外,除了可以获得变量和值之外还可以跟注册表的值挂上关系。在2000中除了setx.exe之外,其他没有任何一种命令行工具可以直接设置系统变量值。只有通过控制面板和注册表编辑器才能够设置。如果有人说可以用set命令的话, 实际上这个CMD的内部命令只能够设置当前控制台窗口的用户环境变量。 setx允许你通过Command Line Mode,Registry Mode,File Mode,这三种模式来设置环境变量。

在软件运行过程中,可能需要配置计算机的环境变量,在这里分为两种情况:

一:增加或修改环境变量只在当前软件环境中使用

如我们设置Java的环境变量:

set

CLASSPATH=%CLASSPATH%C:\LS\JAVA.JAR

保持原有的不变

自己加上要加的jar包,用分号隔开,当然你也可以写到前面,如:set

CLASSPATH=D:/My_Path%CLASSPATH%

set

JAVA_HOME=

这里的路径自己写吧

不过这样写只对你打开的这个dos窗口有效,也就是你只有在这个窗口用java等命令,才会找到你才设的变量JAVA_HOME等

如果想看看是否设置成功可以用:echo

%JAVA_HOME%

常用此方法配置当前软件的运行环境,如在PL/SQL的启动时,使用批处理(bat)来启动他并配置Oracle的变量信息,网上这种代码很多就不贴出来了,需要的自己去搜索。

二:通关注册表永久性的保存设置或增加的环境变量

以下是我从网上找的代码,很简单,如果你看不懂的,再给我留言吧:

实例一:批处理设置系统环境变量

::添加环境变量JAVA_HOME

@echo

off

echo

添加java环境变量

set

regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session

Manager\Environment

set

evname=JAVA_HOME

set

javapath=c:\java\jdk

reg

add

"%regpath%"

/v

%evname%

/d

%javapath%

/f

pause>nul

::删除环境变量JAVA_HOME

@echo

off

echo

删除java环境变量

set

regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session

Manager\Environment

set

evname=JAVA_HOME

reg

delete

"%regpath%"

/v

"%evname%"

/f

pause>nul

实例二:先判断该环境变量是否已经存在,如果不存在则添加该环境变量。

@echo

off

@set

Path_=D:\Program

Files

for,/f,"skip=4

tokens=1,2,*",%%a,in,('reg

query

"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session

Manager\Environment"

/v

Path'),do,(

@set

PathAll_=%%c

)

echo

%PathAll_%|find

/i

"%Path_%"

&&

set

IsNull=true||

set

IsNull=false

if

not

%IsNull%==true

(

reg

add

"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session

Manager\Environment"

/v

Path

/t

REG_EXPAND_SZ

/d

"%PathAll_%%Path_%"

/f

)

pause

对于实例一和实例二是从简单到复杂的过程,主要是拍有些人对代码的理解程度不同。

1. .bat文件中获取bat文件所在目录的参数为 %~dp0 %~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录 cd是转到这个目录,不过我觉得cd /d %~dp0还好些 选项语法: ~0 -删除任何引号("),扩充%0 %~f0 -将%0扩充到一个完全合格的路径名(“f”是file,即文件) %~d0 -仅将%0扩充到一个驱动器号 %~p0 -仅将%0扩充到一个路径 %~n0 -仅将%0扩充到一个文件名(“n”是name文件名) %~x0 -仅将%0扩充到一个文件扩展名 %~s0 -扩充的路径只含有短名(“s”为Short,短的) %~a0 -将%0扩充到文件的文件属性(“a”为attribute,即属性) %~t0 -将%0扩充到文件的日期/时间(“t”time) %~z0 -将%0扩充到文件的大小(Size大小) %~$PATH:0 -查找列在路径环境变量的目录,并将%0扩充 到找到的第一个完全合格的名称。如果环境变量名 未被定义,或者没有找到文件,此组合键会扩充到 空字符串 可以组合修饰符来得到多重结果: %~dp0 -仅将%0扩充到一个驱动器号和路径 %~nx0 -仅将%0扩充到一个文件名和扩展名 %~fs0 -仅将%0扩充到一个带有短名的完整路径名 %~dp$PATH:0 -查找列在路径环境变量的目录,并将%I扩充 到找到的第一个驱动器号和路径。 %~ftza0 -将%0扩充到类似输出线路的DIR %0为当前批处理文件 如果0换成1为第一个文件,2为第2个 **************************************************** %0代指批处理文件自身 %~d0是指批处理所在的盘符 %~dp0是盘符加路径 cd %~dp0就是进入批处理所在目录 2.添加永久环境变量 用reg add 向HKLM\system\controlset001\control\session manager\environment添加变量即可 如:添加添加值为hedalixin变量NAME reg add "HKLM\system\controlset\control\session manager\environment" /v NAME /t REG_SZ /d hedalixin


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/8020321.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存