С большой помощью другого пользователя я смог вырезать символы из одного вывода из CMD. Затем я добавил свою следующую часть кода, откуда он меня оставил, с переменной _3octet
. Мой код сканирует все IP-адреса, связанные со шлюзом, к которому подключен компьютер, и фиксирует только те, которые имеют ответ. Оттуда я получаю список IP-адресов, которые ответили.
Reply from 192.168.1.67: bytes=32 time=288ms TTL=64
Reply from 192.168.1.72: bytes=32 time<1ms TTL=128
Reply from 192.168.1.73: bytes=32 time=16ms TTL=64
Reply from 192.168.1.75: bytes=32 time<1ms TTL=128
Reply from 192.168.1.76: bytes=32 time=155ms TTL=64
Reply from 192.168.1.88: bytes=32 time=1ms TTL=255
Оттуда я хочу получить только IP-адреса, поэтому исключаю все, кроме «192.168.1. #», Для использования в будущей части программы. Аналогично начальной части кода с переменной _3octet
.
Вот мой код
@echo off
setlocal
setlocal enabledelayedexpansion
rem throw away everything except the IPv4 address line
for /f "usebackq tokens=*" %%a in (`ipconfig ^| findstr /i "ipv4"`) do (
rem we have for example "IPv4 Address. . . . . . . . . . . : 192.168.42.78"
rem split on : and get 2nd token
for /f delims^=^:^ tokens^=2 %%b in ('echo %%a') do (
rem we have " 192.168.42.78"
rem split on . and get 4 tokens (octets)
for /f "tokens=1-4 delims=." %%c in ("%%b") do (
set _o1=%%c
set _o2=%%d
set _o3=%%e
set _o4=%%f
rem strip leading space from first octet
set _3octet=!_o1:~1!.!_o2!.!_o3!.
echo !_3octet!
)
)
)
cd C:\Windows
for /l %%i IN (1,1,254) do ping -n 1 !_3octet!%%i | for /f delims^=^:^ tokens^=1 %%g in (find /i "bytes=32") do (
for /f "tokens=1-4 delims=." %%j in ("%%g") do (
set _o1=%%j
set _o2=%%k
set _o3=%%l
set _o4=%%m
set _4octet=!_o1:~11!.!_o2!.!_o3!.!_o4!
echo !_4octet!
)
)
endlocal
Я получаю : was unexpected at this time.
в качестве выхода несколько раз. Что говорит мне, что он пытается пинговать каждый адрес 1-254, а не те, которые приходят в ответ. Излишне говорить, что мой код не работает, как я надеялся.
Я планировал использовать этот окончательный список IP-адресов в этом коде: shutdown -r -m \\192.168.1.1 -t 10
для выключения компьютеров, подключенных к шлюзу.
Если это вообще сбивает с толку, дайте мне знать. Спасибо.