2013-10-25 50 views
0

我有以下批处理文件,但是,如果您启用了多个NIC并为其报告的第一个NIC吐出速度输出,它会吓坏了,但是对于任何更多,它报告获得多个NIC速度10/100/1000

Speed = Missing Operand 

我该如何解决这个问题?

@echo off 
for /f "tokens=2 delims==" %%a in ('wmic nic where NetEnabled^=true get speed /value ^| find /i "speed"') do set /a speed=%%a 
set /a speed=((%speed%/1024)/1024) 
echo Speed in megabytes: %speed% Mbps 
pause 

此外,为什么没有在批处理文件执行前的'=''|'

回答

0
@ECHO OFF &SETLOCAL 
for /f "tokens=2 delims==" %%a in ('wmic nic where NetEnabled^=true get speed /value ^| find /i "speed"') do set "speed=%%a" 
set /a speed=speed/1048576 2>nul 
if %speed% neq 0 (echo Speed in megabytes: %speed% Mbps) else echo No speed available. 

你一定要逃逸for循环=|,无论工作没有'^'如果批处理或cmd窗口。这是因为它在for循环中。

+0

如果您有多个NIC,这仍然不会提供正确的输出。想想怎么可能呢?当然,你需要在一个循环内打印出每个网卡的速度,否则你会一直覆盖可变速度? – PnP