2014-12-02 6 views
0

Я пытался сделать партию, которая выполняет ipconfig и получает ip. он затем сопоставляет ip с установленным значением. отображение, если ip соответствует или нет. ближе всего я нашел, было в другом посте, который Šiпытаясь сделать партию в соответствии с моим текущим 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-убедитесь, что его множество ip.

благодарим вас заранее!

+0

я просто понял, что я, возможно, потребуется вместо проверки внутрибрюшинно проверяет IP шлюза, чтобы увидеть, если она изменилась, а не на IP. также в дополнение к этому, так как у меня есть адаптер USB 1 usb, внутренний адаптер wifi и порт Ethernet, мне бы хотелось, чтобы каждый проверил конкретный ip. Причина этого заключается в том, что у меня есть несколько сетей, школа, работа, домашний и мобильный, что мне нужны программы, которые были запущены или убиты на основе адаптера и шлюза (поскольку ip не выглядит общедоступным) и на основе этого адаптера я могу используйте vpn. вот почему я ищу изменения шлюза ips в адаптерах. – droopie

ответ

1

Это можно сделать с помощью одного вкладыша.

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

&& оператор оценивает после успешного возвращения команды find. Однако, если find терпит неудачу (это верно, если нет совпадений), вместо этого оценивается материал после ||. Это в основном сокращенная форма следующего:

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

Использование find «s кода возврата (его %ERRORLEVEL%) очень удобен для определения того, существует ли строка внутри другой строки.

Для получения дополнительной информации об условном исполнении, read this.


Edit: OP прокомментировал, «У меня есть один USB WiFi адаптер, внутренний адаптер Wi-Fi и порт локальных сетей, я хотел бы, чтобы каждый одну проверку для конкретного IP ....» Вот основной скелет, который вы можете использовать для создания своего проекта. Используйте что-то вроде 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

Вы можете использовать 'wmic nicconfig' вместо' ipconfig'. Я отправлю пример в следующий раз, когда попаду на компьютер, если кто-то другой не ударит меня. – rojo

+0

Я только понял, что то, что мне может понадобиться вместо проверки ip, проверяет шлюз ip, чтобы увидеть, изменилось ли его, а не ip. также в дополнение к этому, так как у меня есть адаптер USB 1 usb, внутренний адаптер wifi и порт Ethernet, мне бы хотелось, чтобы каждый проверил конкретный ip. Причина этого заключается в том, что у меня есть несколько сетей, школа, работа, домашний и мобильный, что мне нужны программы, которые были запущены или убиты на основе адаптера и шлюза (поскольку ip не выглядит общедоступным) и на основе этого адаптера я могу используйте vpn. вот почему я ищу изменения шлюза ips в адаптерах. – droopie

 Смежные вопросы

  • Нет связанных вопросов^_^