请参阅下面的代码 -
您只需要一个 FOR 语句来测试 - 因为它将填充一个环境变量。如果变量不存在,则程序未安装,您 :CALL 执行适当的操作。
下面的代码:
- 在注册表中查询 HKLM\software\Batchver\batchver 中的值
- 将其分配给环境变量。
- 测试分配是否成功。如果分配失败(即注册表项中没有数据),调用安装例程。
- 另外三个语句测试环境变量的值,并且每次都采取行动。
- 所有子例程都包含一个将注册表更新为当前版本号的例程。
@echo off SETLOCAL ENABLEEXTENSIONS SETLOCAL ENABLEDELAYEDEXPANSION set batchver=
for /f "tokens=3 skip=3" %%i in ('reg query HKLM\Software\batchver /v batchver') do @set batchver=%%i
if .batchver==. call :new_install
:: if already installed do nothing.
if batchver==5.0 @echo Up to date! && goto :exit
if batchver leq 4.5 call :reinstall
if batchver gte 4.6 call :patch
goto :exit
:new_install
<new installation routines here.>
::update registry with new version
reg add HKLM\software\batchver /v batchver /d 5.0 /f
goto :eof
:reinstall
<reinstall routine here>
::update registry with new version
reg add HKLM\software\batchver /v batchver /d 5.0 /f
goto :eof
:patch
<patch routines here>
::update registry with new version
reg add HKLM\software\batchver /v batchver /d 5.0 /f
goto :eof
:exit