ローカル接続を自動的に取得し、ネットワークアドレスを変更します

バットファイルの処理

Bat ファイル処理インスタンスは、
ローカル接続とネットワーク アドレスの変更を自動的に取得します。


序文

社内LANや固定ネットワークアドレスの製品開発ではアドレス変更の問題が頻繁に発生しますが、毎回手動で使用するのは非常に面倒ですし、固定IPv4アドレスを覚えておく必要もあります。開発者が変更するのはよくあることですが、製品が量産され、他の部門に渡されて使用やテストが行​​われると、ネットワーク アドレスが一致しないという問題が発生します。常に上位のコンピュータまたは下位のコンピュータに問題があり、ハゲの原因になります。
この記事では、Windows のバット ファイルにある I ローカル ネットワーク P アドレスを現在のバット ファイルに保存し、I ローカル ネットワーク P アドレスを設定して、I ローカル ネットワーク P アドレスを自動的に取得したり、その他の機能を使用したりできます。


1. WindowsコマンドラインCMDの基本文法

文法のヘルプ

すべての CMD コマンドを同時に使用して命令 /?ヘルプを表示できます。直接使用することもできますhelp 命令
まず、Windows コマンド ラインに入り、次の操作を実行します:
win + r キーを押したまま cmd と入力し、Enter キーを押します
[画像のアップロードに失敗しました...(image-e99b16-1655605490569)] を
クリックしてからping /? と入力して ping コマンドをクエリするには、ヘルプを使用してください。
[画像のアップロードに失敗しました...(image-a5e7de-1655605490569)]

変数の代入

変数の型を定義せずに集合演算を直接使用する

set j=0

タイトルループ、条件判定

条件判定のステートメント構文は次のとおりです。

IF  [判断条件]  (
       [命令1]
    ) ELSE (
       [命令2]
    )

判定条件は通常の変数k==1等でもよいし、文字列でもよいstring1==string2
比較条件は以下の構文でも表現できます。

EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于

以下のように、ファイルが存在するかどうかを判断するためによく使用されます。ファイル 1.txt が存在する場合は、それを削除します。

IF EXIST 1.txt del 1.txt 

FOR ループ ステートメントは、ファイル内の各行をローテーションでトレーニングしたり、文字列の各行を特定の記号で分割してラウンドロビン検索を実行したりするためによく使用されます。
基本的な構文は次のとおりです
。 ローテーション トレーニングは 1.txt の文字列の各行を出力し、トークンは %%t 変数が割り当てられるときにワイルドカード * に一致する値を表します。

for /f "tokens=*" %%t in (1.txt) do (
echo %%t
)

変数呼び出し

値を代入する場合、変数値 j を変数 b に直接代入できますが、呼び出すときに %j% を追加する必要があります。

set j=0
set b=j
set con%j%=1

可変遅延演算を追加する場合に必要です。じ!変数呼び出しを行う

setlocal enabledelayedexpansion
set j=0
set b=j
set con!j!=1

その他の使用構文については、他の人のブログ「CMD 基本構文」を参照してください。

2、batファイル処理コードの解釈

1. 初期動作

コードは以下のように表示されます:

@set "interipp=192.168.31.142"
@set "intermaskk=255.255.255.0"
@set "intergatee=192.168.31.1"
@set "interdns11=192.168.31.1 "
@set "interdns22=172.16.3.200"
@echo off
@cls

当初、ここに保存されていたのは、ローカル マシン I のローカル ネットワーク P を記録するために使用したアドレスであり、使用されないためにここに置かれていました。また、エスケープ文字 ^ は、bat ファイルの生成時にシステムによってデフォルトでこの文字が変数値にエスケープされるため、再生成された Bat ファイルは使用できません。(この種のデバッグは長い間行われており、インターネット上でこれに対処する良い方法はありません。)

2. ローカル接続名を取得します。

::------------------------------------先跳转到这里---------------------------------------------------------------
::获取网络连接名称
:GETNAME
@if exist 10.bat del 10.bat
@cls
@(for /f "tokens=3*" %%a in ('netsh interface show interface^|more +2') do @echo,%%b)>".\network.txt"
@set j=0
@echo 获取到以下本地连接:
@for /f "tokens=*" %%i in (.\network.txt) do (
    set /a j+=1
    call set 网络连接%%j%%=%%i
    call set ethernetAdapter=%%i
    call echo %%ethernetAdapter%%
)
@del /s /q /f .\network.txt

上記のコードは、ローカル ネットワーク接続のクエリを実装し、出力および印刷用に network.txt に保存します。出力が印刷されたら、ファイル (最後の行) を削除します。

3. ローカルネットワーク接続を印刷する

::选择需要设置的本地连接
@cls
@echo ----------------------------------------------------------------
@echo ----------------------------------------------------------------
@echo 请选择需要设置的网络连接:
@for /l  %%i in (1,1,!j!) do (
echo 请按 %%i设置   "!网络连接%%i!"
)
echo.

3. 操作するローカル接続を選択します

::根据选择赋值
set /p KEYSET= 已选择:
@cls
@for /l  %%i in (1,1,!j!) do (
if %KEYSET% == %%i  set name=!网络连接%%i!
if %KEYSET% == %%i  echo 已选择  "!网络连接%%i!"
)
goto SET

この部分は、コンピューターに仮想マシンまたはワイヤレス接続がインストールされている場合に複数のローカル接続が存在するため追加されています。正しいローカル接続を選択した場合にのみ、正しい I ローカル ネットワーク P 接続ネットワークを設定できます。

4. LANの固定ネットワークアドレスを設定する

:SET
@echo ----------------------------------------------------------------
@echo ----------------------------------------------------------------
echo 设置[局域网I P]请按 1
echo 设置[自动I.P]请按 2
echo 设置[固定]请按 3
echo 设置双I.P 本机+[固定]请按 4
echo 记录当前本机I P为[局域网I.P]请按 d
echo.
@set /p KEY= 已选择:
if %KEY% == 1 goto ONE
if %KEY% == 2 goto TWO
if %KEY% == 3 goto THREE
if %KEY% == 4 goto FOUR
if %KEY% == 5 goto FIVE
if %KEY% == d goto D

上記はジャンプを選択するために使用され、dを選択すると、現在のIPを保存するオプションにジャンプします。

5. ネットワークアドレスを動的に割り当てる

コードは次のとおりです(例)。

:TWO
echo 正在进行动态IP设置,请稍等...   
echo. IP 地址正在从DHCP自动获取...   
netsh interface ip set address "%name%" dhcp   
echo. DNS地址正在从DHCP自动获取...   
netsh interface ip set dns "%name%" dhcp   
echo ----   
echo 全部设置完成!   
pause  
goto end

この部分は非常に一般的で、インターネット上にたくさんあるので、ここでは紹介しません。

6. 二重のローカルネットワークアドレスを追加する

コードは次のとおりです(例)。

:THREE
echo 设置7 正在自动添加 I.P ......
netsh interface ip add address name="%name%"   addr=172.29.4.100 mask=255.255.0.0   
echo I.P地址 /子网掩码 /网关设置完成
pause
goto end

7. ローカル IPv4 アドレスを現在のバット ファイルに保存します。

この部分は、まずローカル接続の IP アドレスを取得し、次にジャンプします。

for /f "tokens=3* delims=: " %%a in ('netsh interface ip show config "%adapter%"^|find /i "IP 地址"') do (
set defaultip=%%a
goto NEXT1
)
:NEXT1
@for /f "tokens=4* delims=) " %%a in ('netsh interface ip show config "%adapter%"^|find /i "掩码"') do (
set defaultmask=%%a
goto NEXT2
)

以下の部分は、現在のバット ファイルを読み取って出力します。その出力は、DNS2 が存在する行の文字列と一致します。存在する場合は、すべての出力がクリアされ、IP フィールドが個別に出力されます (回避のため) BAT ファイルの生成時に感嘆符やその他のエスケープ文字が使用されるため、ローカル IP アドレスが BAT ファイルの最初の数行に配置され、その後の出力は現在の BAT ファイルの内容と一致します。

@(for /f "tokens=* delims=" %%t in ('findstr  .* %infile%') do (
@for /f "tokens=1,2* delims= " %%i in ("%%t") do (
@rem 匹配dns1
@if "%%~j"=="interdns22=%interdns22%" (
@if exist %outfile% del %outfile%
@echo @set "interipp=%defaultip%">>%outfile%
@echo @set "intermaskk=%defaultmask%">>%outfile%
@echo @set "intergatee=%defaultgate%">>%outfile%
@echo @set "interdns11=%defaultdns1%">>%outfile%
@set /a cnt=1
)
)

最後に、新しいバット ファイルを生成するジャンプがあり、現在のバット ファイルを削除し、新しく生成されたバット ファイルの名前を元のバット ファイル名に変更します。

echo 保存完成
goto JUMP
::生成一个新的bat文件进行旧文件的删除以及新文件的命名
:JUMP
@echo. >10.bat
@echo if exist %infile% del %infile%>>10.bat
@echo ren 3.bat %infile%>>10.bat
@echo %infile%>>10.bat
@echo if exist 10.bat del 10.bat>>10.bat
@echo exit>>10.bat
10.bat
exit

ソースファイル

ソースコードファイルがアップロードされており、設定をダウンロードできます。
リソース ファイル:ローカル接続アドレスが自動的に変更され、保存されます。


要約する

Bat ファイルの処理は非常に便利で、ファイルの追加と削除のいくつかの基本操作や、自動シャットダウン、スケジュールされたタスクの追加などのコンピューター設定をこれを通じて設定できます。

おすすめ

転載: blog.csdn.net/weixin_43058521/article/details/125355499