2012-11-23 4 views
1

그래서 현재 네트워크를 검사하는 배치 파일을 만들고 있습니다. 내가 한 일은 핑 요청에 응답 한 네트워크의 모든 컴퓨터의 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가 필요합니다.

도움이 되셨다면 감사합니다.

답변

0

답하기에는 너무 늦지 않으십니까? 이것은 당신에게 가장 많은 도움을줍니다. 이 작업을 수행하는 데 더 깔끔한 방법이있을 수 있지만 최대한 많은 코드를 따르려고했습니다.

setlocal enabledelayedexpansion 
@echo off 
SET fl=%~dp0Logs\IPAddresses.txt 
set net=10.2.10. 
set start=71 
set end=75 

    FOR /L %%i IN (%start%,1,%end%) DO ping -n 1 %net%%%i | findstr /i Reply >> %fl% 
    for /f "usebackq tokens=3" %%t in (`findstr /b /c:Reply from %fl% `) do (
    set ip=%%t 
    set ip=!ip:~0,-1! 
echo !ip! 
) 
관련 문제