批处理:“如果win7或更高版本不运行”

时间:2015-08-06 12:36:12

标签: windows batch-file

我正在寻找一个批处理文件,根据Windows版本向我发送正确的路径这个我使用过的早期代码,必须要有办法。 “如果比win7更早跳到了”这不适用于Windows 10.我无法理解这个计算,我认为必须有一个简单的方法来写这个。

FOR /F "tokens=*" %%a IN ('ver') DO (
SET ver=%%a
)
SET v1=%ver:~27,1%
SET v2=%ver:~29,1%
IF %v1% LSS 6 GOTO JUMPTO
IF %v2% LSS 2 GOTO JUMPTO
call %~d0\bat\Timecounter\startwindowsupdate.bat
start %~d0\portup\portup.exe /u
GOTO:end
:JUMPTO
ECHO Windows version too old! Run windows update manualy! 
PAUSE
:end
Exit

ver:Microsoft Windows [Version 10.0.10240]

的输出

尝试了一些事情(对我来说更容易理解)

@Echo OFF
Title Portup

ver | find "5.1" >nul && goto toold
ver | find "6.0" >nul && goto toold
ver | find "6.1" >nul && goto toold
ver | find "6.2" >nul && goto goodtogo
ver | find "6.3" >nul && goto goodtogo
ver | find "10.0" >nul && goto goodtogo

:toold
ECHO Windows to old. We don't support this OS
pause >nul
call %~d0\bat\avslutt.bat

:goodtogo
call %~d0\portup\portup.exe /u

2 个答案:

答案 0 :(得分:1)

试试这个:

@echo off

for /F "tokens=4,5 delims=. " %%a in ('ver') do set "version=%%a%%b"
if %version% leq 61 goto tooOld

[edit]:简化代码......

答案 1 :(得分:0)

基于wmic os get /value命令输出的下一个代码段可以提供帮助:

@ECHO OFF >NUL
SETLOCAL enableextensions
for /F "tokens=1-3 delims=. " %%G in ('
  wmic os get Version^, WindowsDirectory ^| findstr "\."
  ') do (
    set /A "_ver1=%%G" 
    set /A "_ver2=%%H" 
    set /A "_ver3=%%I" 
)
set _ver

Windows 8 上的输出:

==>ver

Microsoft Windows [Version 6.3.9600]

==>D:\bat\SO\31855974.bat
_ver1=6
_ver2=3
_ver3=9600

==>