общее количество байтов командной строки/пакетного эха, отправленных и полученных в netstat /e

Я знаю, что это дубликат, но ответ в Получить некоторую информацию от netstat -e в новом пакетном файле не будет работать в моем пакете. я знаю, что что-то упускаю, может быть, это ОС, которую я использую (Microsoft Windows XP Professional / ПК на базе X86), я просто не уверен, что это такое.

netstat -e | find "Bytes"

работает нормально, но

for /F "tokens=2,3" %a in ('netstat -e ^| find "Bytes"') do echo received:%a sent:%b

а также

for /F "tokens=2,3" %a in ('netstat -e ^| find "Bytes"') do set received=%a&set sent=%b

не будет работать. Что мне нужно, так это просто число из полученного: 74546759 отправленного: 8593498 (74546759), чтобы оно стало эхом, указанным в командной строке, чтобы я мог установить его как переменную в этом пакете. что мне нужно сделать, это показать «Байты» как байты, полученные в числовом значении, чтобы я мог установить его как% R1% и% R2% Если бы кто-то мог набраться терпения и исправить мою партию, я был бы счастлив. Большое спасибо за любую помощь. БОЛЬШОЕ СПАСИБО MC ND за его ответ, он отлично сработал, теперь у меня есть проблема, как отличить первое полученное от второго, чтобы выполнить математику. %received% всегда дает последнее значение, а затем Kbs/s всегда равно 0

@echo off
title command line/batch echo totalbytes sent and received in netstat /e
title https://stackoverflow.com/questions/15382742/get-some-information-from-netstat-e-in-new-batch-file
:begin
color 0b
MODE CON:COLS=13 LINES=15
netstat -e | find "Bytes" >NUL
for /F "tokens=2,3" %%a in ('netstat -e ^| find "Bytes"') do set "received=%%a" & set "sent=%%b"
echo %received%
sleep 1
netstat -e | find "Bytes" >NUL
for /F "tokens=2,3" %%a in ('netstat -e ^| find "Bytes"') do set "received=%%a" & set "sent=%%b"
echo %received%
set /a R1=%received%
if %R1% == %R1% goto R1confirm
:R1confirm
set /a R2=%received%
if %R2% == %R2% goto R2confirm
:R2confirm
set /a Bytes1=%R1%
if %Bytes1% == %Bytes1% goto Bytes1confirm
:Bytes1confirm
set /a Bytes2=%R2%
if %Bytes2% == %Bytes2% goto Bytes2confirm
:Bytes2confirm
set /a varia1=%Bytes2%-%Bytes1%
set /a answer1=%varia1%
echo.
echo = %answer1% B/s
echo.
set /a varia2=%answer1%/1024
set /a answer2=%varia2%
echo = %answer2% Kbs/s
echo.
set /a varia2=%answer1%/1048576
set /a answer2=%varia2%
echo = %answer2% Mbs/s
echo.
pause
goto begin

person Calib    schedule 24.04.2014    source источник


Ответы (1)


Обе команды for работают из командной строки. Чтобы использовать его внутри пакетного файла, удвойте знаки процента

for /F "tokens=2,3" %%a in ('netstat -e ^| find "Bytes"') do set "received=%%a" & set "sent=%%b"
person MC ND    schedule 24.04.2014
comment
это отлично сработало, как разделить два %received%, чтобы выполнить математику для Кбит / с, извините, я не подумал об этом в начале. stackoverflow.com/users/2861476/mc-nd - person Calib; 24.04.2014
comment
В первом for назначьте данные %received1%, во втором %received2%, поскольку вы ждете 1 секунду между двумя чтениями, вычтите, и у вас будет B/s. Помните, что арифметика пакетных файлов ограничена значениями ниже 2147483648. - person MC ND; 24.04.2014