批处理文件:- 检测窗口版本并运行exe文件



我想从批处理中检测Windows版本,并根据结果启动exe文件

示例代码不起作用

@echo off
setlocal
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
if "%version%" geq "6.2" goto netfx_4
if "%version%" == "6.1" goto netfx_35
if "%version%" == "6.0" goto netfx_35
:netfx_35
start "C:UsersAnkurAppDataRoamingMicrosoftWindowsStart MenuProgramsAccessoriesNotepad.lnk"
exit 1
goto :EOF
:netfx_4
start "C:UsersAnkurAppDataRoamingMicrosoftWindowsStart MenuProgramsAccessoriesNotepad.lnk"
exit 1
goto :EOF
endlocal

为了测试exe的位置,我启动记事本文件

但是此代码不起作用。

>=是一个无效的比较运算符。尝试geq(其他人equneqlssleqgtr

@echo off
setlocal
for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
if "%version%" geq "6.2" goto netfx_4
if "%version%" == "6.1" goto netfx_35
if "%version%" == "6.0" goto netfx_35
:netfx_35
start start "" name.exe
exit 1
goto :EOF
:netfx_4
start "" name.exe
exit 1
goto :EOF
endlocal

注意: - EXE 应与批处理文件的相同位置相同

由于您正在寻找的版本是使用 WMIC 的操作系统,因此我会走这条路(特别是因为ver的输出在技术上不是操作系统版本)。

@ECHO OFF
FOR /F "SKIP=1 TOKENS=1-2 DELIMS=." %%A IN ('WMIC OS GET VERSION'
) DO FOR %%C IN (%%A%%B) DO IF %%C GEQ 62 GOTO :netfx_4
:netfx_35
START "" "%AppData%MicrosoftWindowsStart MenuProgramsAccessoriesNotepad35.lnk"
GOTO :EOF
:netfx_4
START "" "%AppData%MicrosoftWindowsStart MenuProgramsAccessoriesNotepad4.lnk"
GOTO :EOF

最新更新