Board logo

标题: [注册表类] 批处理判断注册表是否存在去安装,为啥没有注册表也安装了? [打印本页]

作者: liucainiao    时间: 2024-10-14 09:49     标题: 批处理判断注册表是否存在去安装,为啥没有注册表也安装了?

  1. @ECHO OFF
  2. (PUSHD "%~DP0") & (REG QUERY "HKU\S-1-5-19" > NUL 2>&1) || (
  3.     powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs" -WindowStyle hidden && EXIT
  4. )
  5. REM 执行第一个安装程序
  6. .\1.exe
  7. IF %ERRORLEVEL% NEQ 0 (
  8.     ECHO 第一个安装程序安装失败,停止安装第二个程序。
  9.     EXIT /B %ERRORLEVEL%
  10. )
  11. REM 检查注册表中的 ModelVersion 值
  12. FOR /F "tokens=2*" %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\L\ModelMgr" /v ModelVersion 2^>nul') DO (
  13.     SET "ModelVersion=%%B"
  14. )
  15. REM 输出 ModelVersion 值以进行调试
  16. ECHO 检查到的 ModelVersion 为:!ModelVersion!
  17. REM 检查 ModelVersion 是否为空
  18. IF "!ModelVersion!"=="" (
  19.     ECHO ModelVersion 的值为空,停止安装程序。
  20.     EXIT /B 1
  21. )
  22. REM 如果 ModelVersion 不为空,执行安装操作
  23. ECHO ModelVersion 的值为 "!ModelVersion!",开始执行安装操作。
  24. REM 执行第二个安装程序(只有在第一个成功时才会执行)
  25. .\2.exe
  26. IF %ERRORLEVEL% NEQ 0 (
  27.     ECHO 第二个安装程序安装失败。
  28.     EXIT /B %ERRORLEVEL%
  29. )
  30. ECHO 所有安装程序已成功执行。
复制代码

作者: flashercs    时间: 2024-10-14 13:40

没开变量延迟
  1. @ECHO OFF
  2. (PUSHD "%~DP0") & (REG QUERY "HKU\S-1-5-19" > NUL 2>&1) || (
  3.     powershell -Command "Start-Process '%~sdpnx0' -Verb RunAs" -WindowStyle hidden && EXIT
  4. )
  5. setlocal enableDelayedExpansion
  6. REM 执行第一个安装程序
  7. .\1.exe
  8. IF !ERRORLEVEL! NEQ 0 (
  9.     ECHO 第一个安装程序安装失败,停止安装第二个程序。
  10.     EXIT /B !ERRORLEVEL!
  11. )
  12. REM 检查注册表中的 ModelVersion 值
  13. FOR /F "tokens=2*" %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\L\ModelMgr" /v ModelVersion 2^>nul') DO (
  14.     SET "ModelVersion=%%B"
  15. )
  16. REM 输出 ModelVersion 值以进行调试
  17. ECHO 检查到的 ModelVersion 为:!ModelVersion!
  18. REM 检查 ModelVersion 是否为空
  19. IF "!ModelVersion!"=="" (
  20.     ECHO ModelVersion 的值为空,停止安装程序。
  21.     EXIT /B 1
  22. )
  23. REM 如果 ModelVersion 不为空,执行安装操作
  24. ECHO ModelVersion 的值为 "!ModelVersion!",开始执行安装操作。
  25. REM 执行第二个安装程序(只有在第一个成功时才会执行)
  26. .\2.exe
  27. IF !ERRORLEVEL! NEQ 0 (
  28.     ECHO 第二个安装程序安装失败。
  29.     EXIT /B !ERRORLEVEL!
  30. )
  31. endlocal
  32. ECHO 所有安装程序已成功执行。
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2