转自:http://blog.youkuaiyun.com/peng790/article/details/52503489
在软件运行过程中,可能需要配置计算机的环境变量,在这里以配置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
运行效果如下图:
本文介绍如何通过SET命令、SETX命令及regadd命令配置Java环境变量。这些方法适用于不同的需求场景,包括临时配置和持久化配置。
601

被折叠的 条评论
为什么被折叠?



