【问题标题】:Check OS version and variable for Network Label检查网络标签的操作系统版本和变量
【发布时间】:2015-12-09 06:24:00
【问题描述】:

不过,我一直在成功使用此代码,希望在执行 netsh 命令重命名 NIC 时对其进行调整和使用 - 尽管在编写此代码时我不确定它是否是最佳路线了。

SET _OSVer=OTHER
FOR /F "Tokens=2 Delims=[]" %%a IN ('VER') DO SET _VerNo=%%a
FOR /F "Tokens=2-3 Delims=. " %%b IN ("%_VerNo%") DO (
    IF "%%b.%%c" EQU "5.2" SET _OSVer=2003
    IF "%%b.%%c" EQU "6.0" SET _OSVer=2008
    IF "%%b.%%c" EQU "6.1" SET _OSVer=2008R2
    IF "%%b.%%c" EQU "6.2" SET _OSVer=2012
    IF "%%b.%%c" EQU "6.3" SET _OSVer=2012R2
)

IF "%_OSVer%" EQU "2003" (ECHO %_OSVer% )
IF "%_OSVer%" EQU "2008" (ECHO %_OSVer% )
IF "%_OSVer%" EQU "2008R2" (ECHO %_OSVer% )
IF "%_OSVer%" EQU "20012" (ECHO %_OSVer% )
IF "%_OSVer%" EQU "20012R2" (ECHO %_OSVer% )

仅供参考:2012 年之前的网络标签是本地连接,2012 年是以太网。

我要执行以下命令

netsh interface set interface name = "%NETWORKNAME%" newname = "network-storage"  >nul 2>&1

我正在考虑基于 OSversion %NETWORKNAME% 将被定义为“本地连接”或“以太网”

我可以使用类似的东西

  IF "%_OSVer%" EQU "2003" + "2008" + "2008R2" SET Networkname="Local Area Network"

或者有更好的方法吗?

编辑 - 来自 Pauls Feeback,最终代码为

 SET NICNaming=OTHER
FOR /F "Tokens=2 Delims=[]" %%a IN ('VER') DO SET _VerNo=%%a
FOR /F "Tokens=2-3 Delims=. " %%b IN ("%_VerNo%") DO (
    IF "%%b.%%c" LEQ  "6.1" SET NICNaming=Local Area Connection
    IF "%%b.%%c" GEQ  "6.2" SET NICNaming=Ethernet

)

ECHO %NICNaming%

netsh interface set interface name = "%NICNaming%" newname = "network-storage"  >nul 2>&1
if %errorlevel%== 0 (Echo found) ELSE (Echo missing abort)

谢谢 乙

【问题讨论】:

    标签: variables batch-file set environment netsh


    【解决方案1】:

    There 是一个有价值的答案。

    如果一定要适应的话,应该是这样的:

    @echo off
    setlocal
    GOTO CHKVERS
    
    :action
    rem action
    SET "Networkname=Local Area Network"
    GOTO:EOF
    
    
    :CHKVERS
    for /f "tokens=4-5 delims=. " %%i in ('ver') do set VERSION=%%i.%%j
    if "%version%" == "6.3" goto action &REM Windows 8.1
    if "%version%" == "6.2" goto action &REM Windows 8.
    if "%version%" == "6.1" goto action &REM Windows 7.
    if "%version%" == "6.0" goto action &REM Windows Vista.
    
    echo Version undetermined, please contact an administrator.
    
    endlocal
    exit /b 0
    

    您可能还喜欢:

    IF "%A%"=="1" IF "%B%"=="1" IF "%C%"=="1" GOTO YES
    GOTO NO
    

    你可以使用 GEQ 和 LEQ

    IF "%version%" GEQ "6.0" IF "%version%" LEQ "6.3" GOTO YES
    GOTO NO
    

    EQU : 相等

    NEQ : 不等于

    LSS : 小于

    LEQ : 小于或等于

    GTR : 大于 >

    GEQ : 大于或等于 >=

    这 3 位语法是必要的,因为 > 和

    http://ss64.com/nt/if.html

    【讨论】:

    • 保罗,现在太明显了! - 谢谢你不知道为什么我什至没有想到 LEQ 或 GEQ! - 通过几个简单(非常)的调整,在你的帮助下我已经实现了我想要的,谢谢 Paul!
    猜你喜欢
    • 2012-02-05
    • 1970-01-01
    • 2011-07-08
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    相关资源
    最近更新 更多