Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 检查网络标签的操作系统版本和变量_Variables_Batch File_Set_Environment_Netsh - Fatal编程技术网

Variables 检查网络标签的操作系统版本和变量

Variables 检查网络标签的操作系统版本和变量,variables,batch-file,set,environment,netsh,Variables,Batch File,Set,Environment,Netsh,不过,我一直在成功地使用这段代码,希望在执行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

不过,我一直在成功地使用这段代码,希望在执行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)
谢谢 B对于这样的事情来说是一个有价值的答案

如果我必须适应,它将是这样的:

@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
相等

NEQ:不平等

LSS:小于 pLEQ:小于或等于=/p pGTR:大于/p pGEQ:大于或等于>=

此3位语法是必需的,因为>和<符号被识别为重定向运算符


Paul,现在很明显谢谢你,我不知道为什么我不考虑LEQ或GEQ经过几次简单(非常)的调整,在你的帮助下,我实现了我想要的,谢谢保罗!