批处理设置环境变量

@ECHO OFF
echo.
echo     **************************************************************
echo     *  用于配置环境变量的预处理程序                              *                           
echo     *  以下注意事项:                                            *
echo     *  1)环境变量只对当前用户有效                               *
echo     *  2)配置前会先备份注册表(备份到所在文件夹的backup.reg)     *
echo     *  3)如配置有问题请运行backup.reg还原                       *
echo     *  4)有些杀毒软件会报安全警报,请点击信任                   *
echo     **************************************************************
 
 
::SET /P inputKey="输入要配置的环境变量:"
::用户变量存储路径
SET regPath= HKEY_CURRENT_USER\Environment
::系统变量存储路径,路径中有空格要用引号括起来
::SET regPath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session" "Manager\Environment

:: 取path的值
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="."

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

set jrepath=%cd%\jre\bin\server
set dllpath=%cd%\dll

::%~dp0指的当前目录
ECHO "备份注册表。。。"
reg export %regPath% %~dp0backup.reg

::下面两种方式(setx、reg add )效果一样。不过setx会截断字符,1024字符以上的用reg add方式。使用reg add需要管理员权限,且要重启电脑
:: setx 方式
::goto setx_type
echo=
ECHO "设置CLASSPATH" 
if "%oldclasspath%"==""."" (
  SETX CLASSPATH "%jrepath%"
) else (
    echo;%oldclasspath%|find "%jrepath%">nul&&echo;exist||SETX CLASSPATH "%jrepath%";"%oldclasspath%"
  )
  

echo=
ECHO "设置PATH"
if "%oldValue%"==""."" (
  SETX PATH "%jrepath%;%dllpath%"
) else (
    echo;%oldValue%|find "%jrepath%">nul&&echo;exist||SETX PATH "%jrepath%;%dllpath%";"%oldValue%"
  )
:::setx_type

:: reg add 方式
goto reg_add
echo=
ECHO "设置CLASSPATH" 
if "%oldclasspath%"==""."" (
  reg add %regPath% /v CLASSPATH /t REG_EXPAND_SZ /d %jrepath% /f
) else (
    echo;%oldclasspath%|find "%jrepath%">nul&&echo;exist||reg add %regPath% /v CLASSPATH /t REG_EXPAND_SZ /d "%jrepath%";"%oldclasspath%" /f
  )

echo=
ECHO "设置PATH"
if "%oldValue%"==""."" (
 reg add %regPath% /v Path /t REG_EXPAND_SZ /d "%jrepath%;%dllpath%" /f
) else (
    echo;%oldValue%|find "%jrepath%">nul&&echo;exist||reg add %regPath% /v Path /t REG_EXPAND_SZ /d "%jrepath%;%oldValue%;%dllpath%" /f
  )
:reg_add

echo=
SET /P a="配置已完成,按回车退出。。。"
exit

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值