0

私はipconfigを実行して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があるかどうかを確認し、IPがある場合は、その設定されたIPであることを確認してください。

前もって感謝します!

4

1 に答える 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%すると、文字列が別の文字列内に存在するかどうかを判断するのに非常に便利です。

条件付き実行の詳細については、こちらをお読みください


編集: OPは、「私は1つのusb wifiアダプター、内部wifiアダプター、およびイーサネットポートを持っています。それぞれに特定の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!
        )
    )
)
于 2014-12-02T20:18:02.693 に答える