2014-12-02 1 views
0

ipconfig를 수행하고 IP를 가져 오는 일괄 처리를 시도했습니다. 그런 다음 ip를 값 세트와 일치시킵니다. ip가 일치하는지 여부를 표시합니다. 내가 찾은 가장 가까운 것은 내가 IP를 가지고 여부와 내가 가진의 IP를 할 경우 확인하면이 특정 어댑터에보고하고보고 조금 더 만 할 수집합을 내 현재 IP와 일치하도록 일괄 처리하려고 시도했습니다

@echo off 

rem --- complete adapter name to find without the ending ":" --- 
set adapter=Wireless LAN adapter Wireless Network Connection 

rem --- token under an adapter to extract IP address from --- 
set IPAddrToken=IPv4 Address 

rem --- token under an adapter to extract IP address from --- 
set matchipaddress=192.168.1.101 

setlocal enableextensions enabledelayedexpansion 
set adapterfound=false 
set emptylines=0 
set ipaddress= 

for /f "usebackq tokens=1-3 delims=:" %%e in (`ipconfig ^| findstr /n "^"`) do (

    set "item=%%f" 

    if /i "!item!"=="!adapter!" (
     set adapterfound=true 
     set emptylines=0 
    ) else if not "!item!"=="" if not "!item!"=="!item:%IPAddrToken%=!" if "!adapterfound!"=="true" (
     @rem "!item:%IPAddrToken%=!" --> item with "IPv4 Address" removed 
     set ipaddress=%%g 
     goto :result 
    ) 
    if "%%f-%%g-!adapterfound!-!emptylines!"=="--true-1" (
     @rem 2nd blank line after adapter found 
     goto :result 
    ) 
    if "%%f-%%g-!adapterfound!-!emptylines!"=="--true-0" (
     @rem 1st blank line after adapter found 
     set emptylines=1 
    ) 
) 

endlocal 

:result 
    echo %adapter% 
    echo. 
    if not "%ipaddress%"=="" (
     echo %IPAddrToken% =%ipaddress% 
    ) else (
     if "%adapterfound%"=="true" (
      echo %IPAddrToken% Not Found 
     ) else (
      echo Adapter Not Found 
     ) 
    ) 

ECHO.  

PAUSE 

확인시 다른 게시물에 있었다 그 세트 IP.

미리 감사드립니다!

+0

난 그냥 내가 대신 IP를 체크해야 할 것은 자사의 IP를하지 변경할 있는지 확인하기 위해 게이트웨이 IP를 확인하는 것을 깨달았다. 또한 그 외에도 1 개의 USB 무선 랜 어댑터, 내부 와이파이 어댑터 및 이더넷 포트가 있기 때문에 각 특정 IP를 확인하고 싶습니다. 나는 여러 네트워크, 학교, 직장, 집 및 모바일 중 하나가 프로그램이 필요하거나 어댑터 및 게이트웨이 (IP가 공용을 조회하는 것 같음)를 기반으로 종료 되었기 때문에 그 이유가 있으며 그 어댑터를 기반으로 VPN을 사용하고 있습니다. 그게 내가 왜 어댑터의 게이트웨이 ips의 변화를 찾고 있는지. – droopie

답변

1

1 회선으로 수행 할 수 있습니다.

ipconfig | find "192.168.1.101" >NUL && echo Match! || echo No match. 

&& 운영자는 find 명령의 성공적인 리턴에 따라 평가한다. 그러나 find이 실패하면 (일치하지 않으면 true), || 이후의 내용이 대신 평가됩니다. 이것은 기본적으로 다음의 축약 형태 :

ipconfig | find "192.168.1.101" >NUL 
if NOT ERRORLEVEL 1 (
    echo Match! 
) else (
    echo No match. 
) 

find의 리턴 코드 (그 %ERRORLEVEL%)를 사용하여 문자열이 다른 문자열 내에 존재하는지 여부를 결정하는 매우 편리합니다.

조건부 실행에 대한 자세한 내용은 read this입니다.


편집 : 영업 이익은 여기에 기본입니다 ".... 내가 특정 IP에 대한 각각의 수표를 가지고 싶지만, 내가 하나의 USB 무선 랜 어댑터, 내부 무선 랜 어댑터 및 이더넷 포트가"주석 골격을 사용하여 프로젝트를 구축 할 수 있습니다. echo !Description! | find "wlan card identifier" 같은 조건부 실행을 사용하여 원하는대로 조치를 취하십시오. 해피 코딩! 는 :

@echo off 
setlocal enabledelayedexpansion 

set "home=10.0.0" 
set "school=192.168" 
set "work=172.16" 

for /f "skip=1 tokens=1* delims={}" %%I in ('wmic nicconfig where "ipenabled=true" get DefaultIPGateway^, Description') do (
    set "IP=%%~I" 

    rem :: make sure !IP! contains numbers before continuing 
    echo !IP! | findstr "[0-9]" >NUL && (

     rem :: trim left from %%J 
     for /f "tokens=* delims= " %%x in ("%%~J") do set Description=%%x 

     if "!IP:%home%=!" neq "!IP!" (
      echo Connected at home on !Description! 
     ) else if "!IP:%school%=!" neq "!IP!" (
      echo Connected at school on !Description! 
     ) else if "!IP:%work%=!" neq "!IP!" (
      echo Connected at work on !Description! 
     ) else (
      echo Unknown connection on !Description! 
     ) 
    ) 
) 
+0

잘 작동하지만 어떻게 특정 어댑터에 사용할 수 있습니까? 나는 3 개의 어댑터를 가지고 있고 프로세스를 죽이기 위해 특정 ip를 가진 특정 어댑터를 원합니다. – droopie

+0

'ipconfig' 대신'wmic nicconfig'를 사용할 수 있습니다. 다른 사람이 저를 때리지 않으면 컴퓨터에 도착할 때 다음에 예제를 게시 할 것입니다. – rojo

+0

나는 방금 ip가 아니라 ip가 아니라 게이트웨이가 ip가 아닌지 확인하기 위해 ip 확인을 필요로한다는 사실을 깨달았다. 또한 그 외에도 1 개의 USB 무선 랜 어댑터, 내부 와이파이 어댑터 및 이더넷 포트가 있기 때문에 각 특정 IP를 확인하고 싶습니다. 나는 여러 네트워크, 학교, 직장, 집 및 모바일 중 하나가 프로그램이 필요하거나 어댑터 및 게이트웨이 (IP가 공용을 조회하는 것 같음)를 기반으로 종료 되었기 때문에 그 이유가 있으며 그 어댑터를 기반으로 VPN을 사용하고 있습니다. 그게 내가 왜 어댑터의 게이트웨이 ips의 변화를 찾고 있는지. – droopie

관련 문제