批处理设置系统环境变量

本文介绍如何通过SET命令、SETX命令及regadd命令配置Java环境变量。这些方法适用于不同的需求场景,包括临时配置和持久化配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:http://blog.youkuaiyun.com/peng790/article/details/52503489

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

[plain]   view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. @echo off  
  2. set PATH=C:\Java\jdk1.8.0_31\bin  
  3. set /p cmd="环境变量设置完成,输入javac回车测试:"  
  4. %path%  
  5. @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的值,该例子读取注册表内的值。

[plain]   view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. @echo off  
  2. set regPath= HKEY_CURRENT_USER\Environment  
  3. set key=path  
  4. ::判断是否存在该路径  
  5. reg query %regPath% /v  %key% 1>nul 2>nul  
  6. if %ERRORLEVEL%==0 (  
  7. ::取值  
  8. For /f "tokens=3,4 delims= " %%v in ('Reg Query %regPath% /v %key% ') do Set oldValue=%%v   
  9. ) else Set oldValue=""  
  10. echo %key%的原值为:%oldValue%  
  11. pause  


3. reg add :直接操作注册表,添加环境变量。
用户环境变量注册表路径
HKEY_CURRENT_USER\Environment
系统环境变量注册表路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
例如:

[plain]   view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. @echo off  
  2. SET regPath= HKEY_CURRENT_USER\Environment  
  3. reg add %regPath% /v Path1 /t REG_EXPAND_SZ /d "%path%;C:\Java\jdk1.8.0_31\bin" /f  
  4. pause  

注意1. 
效果和SETX一样,但是两者区别是setx直接生效,reg add 需要重启电脑。reg操作注册表需要管理员权限。
注意2.
如果路径中有空格时,需要用空格括起来。如下:
SET regPath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session" "Manager\Environment 


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

[plain]   view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. @ECHO OFF  
  2.   
  3. echo.  
  4. echo    **************************************************************  
  5. echo    *  用于配置环境变量的批处理程序                              *  
  6. echo    *  配置JAVA环境变量输入: 1                                   *  
  7. echo    *  配置Python环境变量输入:2                                 *  
  8. echo    *  配置C环境变量输入: 3                                      *  
  9. echo    *  以下注意事项:                                            *  
  10. echo    *  1)环境变量只对当前用户有效                               *  
  11. echo    *  2)配置前会先备份注册表(备份到所在文件夹的backup.reg)     *  
  12. echo    *  3)如配置有问题请运行backup.reg还原                       *  
  13. echo    *  4)有些杀毒软件会报安全警报,请点击信任                   *  
  14. echo    *                                --scott     *  
  15. echo    **************************************************************  
  16.   
  17.   
  18. SET /P inputKey="输入要配置的环境变量:"  
  19. ::用户变量存储路径  
  20. SET regPath= HKEY_CURRENT_USER\Environment  
  21. ::系统变量存储路径,路径中有空格要用引号括起来  
  22. ::SET regPath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session" "Manager\Environment  
  23. set key=path  
  24.   
  25. ::判断用户配置的键(HKEY_CURRENT_USER\Environment\path)是否有值  
  26. reg query %regPath% /v %key% 1>nul 2>nul  
  27. if %ERRORLEVEL%==0 (  
  28. ::取注册表中的键值(HKEY_CURRENT_USER\Environment\path)存入%oldValue%变量中  
  29. ::复制内容后在末尾加上新的值再保存到path中,避免覆盖原值  
  30. For /f "tokens=3,4 delims= " %%v in ('Reg Query %regPath% /v %key% ') do Set oldValue=%%v   
  31. ) else Set oldValue="."  
  32.   
  33. if %inputKey%==1 ( goto java )  
  34. if %inputKey%==2 ( goto python )  
  35. if %inputKey%==3 ( goto c )  
  36.   
  37. :java  
  38. SET /P JDKPath="请输入JDK安装路径,bin文件夹上一层(例如:C:\Java\jdk1.8.0_31) :"  
  39. ::%~dp0指的当前目录  
  40. ECHO "备份注册表。。。"  
  41. reg export %regPath% %~dp0backup.reg  
  42. echo=  
  43. ECHO "设置JAVA_HOME"  
  44. SETX JAVA_HOME "%JDKPath%"  
  45. echo=  
  46. ECHO "设置CLASSPATH"   
  47. SETX CLASSPATH ".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;%%JAVA_HOME%%\jre\lib\rt.jar"   
  48. echo=  
  49. ECHO "设置PATH"  
  50.   
  51. ::下面两种方式(setx、reg add )效果一样。不过setx会截断字符,1024字符以上的用reg add方式。  
  52. if "%oldValue%"==""."" ( SETX PATH "%%JAVA_HOME%%\bin" ) else SETX PATH "%oldValue%;%%JAVA_HOME%%\bin"  
  53. ::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  
  54. echo=  
  55. SET /P a="配置已完成,按回车退出。。。"  
  56. ::start "" "%JDKPath%\bin\javac.exe"  
  57. exit  
  58.   
  59.   
  60. :python  
  61. SET /P PyPath="请输入Python安装路径(例如:C:\Python) :"  
  62. ECHO "备份注册表。。。"  
  63. reg export %regPath% %~dp0backup.reg  
  64. echo=  
  65. ECHO "设置PATH"  
  66. ::下面两种方式(setx、reg add )效果一样。不过setx会截断字符,1024字符以上的用reg add方式。  
  67. if "%oldValue%"==""."" (SETX PATH %PyPath%) else SETX PATH "%oldValue%;%PyPath%"  
  68. ::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  
  69. echo=  
  70. SET /P a="配置已完成,按回车退出。。。"  
  71. ::start "" "%PyPath%\python.exe"  
  72. exit  
  73.   
  74. :c  
  75. SET /P CPath="请输入Dev-Cpp安装路径,bin文件夹上一层(例如:C:\Dev-Cpp) :"  
  76. ECHO "备份注册表。。。"  
  77. reg export %regPath% %~dp0backup.reg  
  78. echo=  
  79. ECHO "设置PATH"  
  80. ::下面两种方式(setx、reg add )效果一样。不过setx会截断字符,1024字符以上的用reg add方式。  
  81. if "%oldValue%"==""."" (SETX PATH "%CPath%") else SETX PATH "%oldValue%;%CPath%\bin"  
  82. ::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  
  83. echo=  
  84. SET /P a="配置已完成,按回车退出。。。"  
  85. ::start "" "%CPath%\bin\gcc.exe"  
  86. exit  


运行效果如下图:




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值