그래서 현재 네트워크를 검사하는 배치 파일을 만들고 있습니다. 내가 한 일은 핑 요청에 응답 한 네트워크의 모든 컴퓨터의 IP만을 가진 텍스트 파일을 만들고 핑 요청의 출력을 IPAdresses.txt라는 파일에 저장합니다. :: ==== ========================================================================================================== ====================배치 스크립트를 사용하여 txt 파일의 텍스트 행을 구문 분석 하시겠습니까?
setlocal enabledelayedexpansion
@echo off
:: 파일 리셋 변수는
echo. > %~dp0Logs\IPAddresses2.txt
SET fl=%~dp0Logs\IPAddresses.txt
:이 명령은 ping 요청을 수행하고 저장 % ~ dp0Logs \ IPAddresses.txt에 대한 응답 만. :: 반환 된 모든 ping은 "192.168.1.1 : bytes = 32 time = 2ms TTL = 64"와 같은 줄을 파일에 만듭니다.
FOR /L %%i IN (1,1,254) DO ping -n 1 192.168.1.%%i | FIND /i “Reply” >> %fl%
:이 명령은 구문 분석 : 파일에 "192.168.1.1에서 회신 = 32 시간 = 2ms의 TTL = 64 바이트를"라인을 그리고 % ~ dp0Logs \ IPAddresses2.txt에 출력을 저장합니다.
for /f "usebackq tokens=3" %%t in (`findstr /b /c:Reply from %fl% `) do (
echo %%t >> %~dp0Logs\IPAddresses2.txt
)
:: ----------- 문제 -----------
:: 문제는 구문 분석이다. 마지막 명령은 "192.168.1.1 :"을 구문 분석 만합니다. 이는 행에서 3 토큰 (또는 문자열의 세 번째 문자 집합) 만 사용하기 때문입니다. "192.168.1.1 :"에서 ":"을 제거해야합니다. 명확하게하려면 IP 주소 끝에 세미콜론과 다음 공백을 제거하고 싶습니다.
:: 나는 모든 줄을 변수에 넣으려고 시도하고 꼬리 문자를 잘라 냈지만 제대로 작동하지 못했습니다. :: 또는 이렇게하려면 FOR 명령을 변경하는 방법이 있습니까 ??
나는 이틀 동안 검색 중이며 모든 종류의 작업을 시도하고 있지만 운이 없다. 추가 기능 및 네트워크 전체 NET 명령에 대한 텍스트 파일에 IP가 필요합니다.
도움이 되셨다면 감사합니다.