批处理设置系统环境变量

在软件运行过程中,可能需要配置计算机的环境变量,在这里以配置Java环境变量为例讲解几种配置方式。
1.  SET命令:这种语法只能在Cmd Shell环境中有效,关闭运行环境环境变量将不保存。
例子:

@echo off
set PATH=C:\Java\jdk1.8.0_31\bin
set /p cmd="环境变量设置完成,输入javac回车测试:"
%path%
@pause


2. SETX命令:Window XP 以上的系统都自带了该命令(如果没有,下载一个Setx.exe),这种方式为永久设定环境变量。
设置用户环境变量 
setx path "C:\Java\jdk1.8.0_31\bin"

设置系统环境变量

setx path "C:\Java\jdk1.8.0_31\bin" /m

注意1. 
在某些情况下会出现“setx 无效语法 默认选项不能超过’2’次”的错误,据信是因为原先的环境变量中存在空格导致的,可使用双引号进行避免。
注意2.
setx设置环境变量后,将在新打开的终端中生效,当前终端不会立即生效。
注意3.
setx在设置变量的长度超过1024,会截取多出的字符。
注意4.
setx还可以操作远程计算机,具体参数设置百度一下setx用法。
注意5.
setx在设置某一变量的值,如果已经存在该变量会覆盖之前的值。所以正确方式是:要保存值=获取当前该变量的值+新值。
例如:set oldValue=获取当前变量值
          setx path %oldValue%;%newValue%
以下为获取用户环境变量path的值,该例子读取注册表内的值。
@echo off
set regPath= HKEY_CURRENT_USER\Environment
set key=path
::判断是否存在该路径
reg query %regPath% /v  %key% 1>nul 2>nul
if %ERRORLEVEL%==0 (
::取值
For /f "tokens=3,4 delims= " %%v in ('Reg Query %regPath% /v %key% ') do Set oldValue=%%v 
) else Set oldValue=""
echo %key%的原值为:%oldValue%
pause

3. reg add :直接操作注册表,添加环境变量。
用户环境变量注册表路径
HKEY_CURRENT_USER\Environment
系统环境变量注册表路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
例如:
@echo off
SET regPath= HKEY_CURRENT_USER\Environment
reg add %regPath% /v Path1 /t REG_EXPAND_SZ /d "%path%;C:\Java\jdk1.8.0_31\bin" /f
pause
注意1. 
效果和SETX一样,但是两者区别是setx直接生效,reg add 需要重启电脑。reg操作注册表需要管理员权限。
注意2.
如果路径中有空格时,需要用空格括起来。如下:
SET regPath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session" "Manager\Environment 


以下为使用setx的一个完整例子

@ECHO OFF

echo.
echo 	**************************************************************
echo 	*  用于配置环境变量的批处理程序                              *
echo 	*  配置JAVA环境变量输入: 1                                   *
echo 	*  配置Python环境变量输入:2                                 *
echo 	*  配置C环境变量输入: 3                                      *
echo 	*  以下注意事项:                                            *
echo 	*  1)环境变量只对当前用户有效                               *
echo 	*  2)配置前会先备份注册表(备份到所在文件夹的backup.reg)     *
echo 	*  3)如配置有问题请运行backup.reg还原                       *
echo 	*  4)有些杀毒软件会报安全警报,请点击信任                   *
echo 	*                 				 --scott     *
echo 	**************************************************************


SET /P inputKey="输入要配置的环境变量:"
::用户变量存储路径
SET regPath= HKEY_CURRENT_USER\Environment
::系统变量存储路径,路径中有空格要用引号括起来
::SET regPath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session" "Manager\Environment
set key=path

::判断用户配置的键(HKEY_CURRENT_USER\Environment\path)是否有值
reg query %regPath% /v %key% 1>nul 2>nul
if %ERRORLEVEL%==0 (
::取注册表中的键值(HKEY_CURRENT_USER\Environment\path)存入%oldValue%变量中
::复制内容后在末尾加上新的值再保存到path中,避免覆盖原值
For /f "tokens=3,4 delims= " %%v in ('Reg Query %regPath% /v %key% ') do Set oldValue=%%v 
) else Set oldValue="."

if %inputKey%==1 ( goto java )
if %inputKey%==2 ( goto python )
if %inputKey%==3 ( goto c )

:java
SET /P JDKPath="请输入JDK安装路径,bin文件夹上一层(例如:C:\Java\jdk1.8.0_31) :"
::%~dp0指的当前目录
ECHO "备份注册表。。。"
reg export %regPath% %~dp0backup.reg
echo=
ECHO "设置JAVA_HOME"
SETX JAVA_HOME "%JDKPath%"
echo=
ECHO "设置CLASSPATH" 
SETX CLASSPATH ".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\jre\lib\rt.jar" 
echo=
ECHO "设置PATH"

::下面两种方式(setx、reg add )效果一样。不过setx会截断字符,1024字符以上的用reg add方式。
if "%oldValue%"==""."" ( SETX PATH "%%JAVA_HOME%%\bin" ) else SETX PATH "%oldValue%;%%JAVA_HOME%%\bin"
::if "%oldValue%"==""."" (reg add %regPath% /v Path /t REG_EXPAND_SZ /d "%%JAVA_HOME%%\bin" /f) else reg add %regPath% /v Path /t REG_EXPAND_SZ /d "%oldValue%;%%JAVA_HOME%%\bin" /f
echo=
SET /P a="配置已完成,按回车退出。。。"
::start "" "%JDKPath%\bin\javac.exe"
exit


:python
SET /P PyPath="请输入Python安装路径(例如:C:\Python) :"
ECHO "备份注册表。。。"
reg export %regPath% %~dp0backup.reg
echo=
ECHO "设置PATH"
::下面两种方式(setx、reg add )效果一样。不过setx会截断字符,1024字符以上的用reg add方式。
if "%oldValue%"==""."" (SETX PATH %PyPath%) else SETX PATH "%oldValue%;%PyPath%"
::if "%oldValue%"==""."" (reg add %regPath% /v Path /t REG_EXPAND_SZ /d "%PyPath%" /f) else reg add %regPath% /v Path /t REG_EXPAND_SZ /d "%oldValue%;%PyPath%" /f
echo=
SET /P a="配置已完成,按回车退出。。。"
::start "" "%PyPath%\python.exe"
exit

:c
SET /P CPath="请输入Dev-Cpp安装路径,bin文件夹上一层(例如:C:\Dev-Cpp) :"
ECHO "备份注册表。。。"
reg export %regPath% %~dp0backup.reg
echo=
ECHO "设置PATH"
::下面两种方式(setx、reg add )效果一样。不过setx会截断字符,1024字符以上的用reg add方式。
if "%oldValue%"==""."" (SETX PATH "%CPath%") else SETX PATH "%oldValue%;%CPath%\bin"
::if "%oldValue%"==""."" (reg add "%regPath%" /v Path /t REG_EXPAND_SZ /d "%CPath%\bin" /f) else reg add %regPath% /v "Path" /t REG_EXPAND_SZ /d "%oldValue%;%CPath%\bin" /f
echo=
SET /P a="配置已完成,按回车退出。。。"
::start "" "%CPath%\bin\gcc.exe"
exit

运行效果如下图:





  • 7
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值