事情是这样的,我要用批处理设置环境变量,然后跟着注册服务。但是我环境变量设置好了,后面的设置环境变量获取的还是空的。试过了2个功能分2个批处理,然后用call语句或者start语句连接,但是都是这个问题。只有分2个批处理,第一个运行完后关闭,在手动运行第二个才能成功。
@echo off
set regpath=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
set local=%~dp0
set catalinahome=%local%software\apache-tomcat-7.0.63
set javahome=%local%software\jdk1.7.0_65
rem LPY
echo.
echo ************************************************************
echo * *
echo * 设置环境变量 *
echo * *
echo ************************************************************
echo.
echo === 准备设置环境变量: CATALINA_HOME=%catalinahome%
echo === 注意: 如果CATALINA_HOME存在,会被覆盖,此操作不可逆的,请仔细检查确认!! ===
echo.
echo === 准备设置环境变量: JAVA_HOME=%javahome%
echo === 注意: 如果JAVA_HOME存在,会被覆盖,此操作不可逆的,请仔细检查确认!! ===
echo.
echo === 准备设置环境变量: CLASSPATH=.;%%JAVA_HOME%%\lib;%%JAVA_HOME%%\lib\tools.jar
echo === 注意: 如果CLASSPATH存在,会被覆盖,此操作不可逆的,请仔细检查确认!! ===
echo.
echo === 准备设置环境变量: PATH=%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin;
echo === 注意: PATH会追加在最前面,
echo.
echo.
echo.
echo.
echo.
echo === 新创建环境变量 CATALINA_HOME=%catalinahome%
setx "CATALINA_HOME" "%catalinahome%" -M
echo.
echo.
echo === 新创建环境变量 JAVA_HOME=%javahome%
setx "JAVA_HOME" "%javahome%" -M
echo.
echo.
echo === 新创建环境变量 CLASSPATH=.;%%JAVA_HOME%%\lib;%%JAVA_HOME%%\lib\tools.jar
setx "CLASSPATH" ".;%%JAVA_HOME%%\lib;%%JAVA_HOME%%\lib\tools.jar" -m
echo.
echo.
echo === 新追加环境变量(追加到最前面) PATH=%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin;
for /f "tokens=1,* delims=:" %%a in ('reg QUERY "%regpath%" /v "path"') do (
set "L=%%a"
set "P=%%b"
)
set "Y=%L:~-1%:%P%"
setx Path "%%JAVA_HOME%%\bin;%%JAVA_HOME%%\jre\bin;%Y%" -m
echo.
echo.
cmd /k "cd/d %local%software\apache-tomcat-7.0.63\bin&&service.bat install&&exit"