ネットワークアダプタにIPアドレスを設定する際にアダプターの選択肢を与えたい。
windowsでbatを使ってネットアークアダプター(以下、IF)に手動でIPアドレスを割り当てたいと考えており
その際、ユーザーにはどのIFにアドレスを割り当てたいか選択肢を与え、標準入力で選択させたいです。
まずはIFの一覧を出力させるため下記コマンドの出力結果をファイルへ保存させるようにしています。
[コマンド]
netsh interface ipv4 show config //このコマンドでIF一覧を取得
findstr /R ".*" 1> nwifs.txt //↑で取得した結果に対し"間に任意の文字列を含む行のみ取得し.txtへ出力
※実際のbatには上2行を|で渡して1行表記にしています。
[コマンド解説]
netsh interface ipv4 show config で出力される値は
インターフェイスの構成 "Loopback Pseudo-Interface 1"
DHCP 有効: いいえ
IP アドレス: 127.0.0.1
サブネット プレフィックス: 127.0.0.0/8 (マスク 255.0.0.0)
インターフェイス メトリック: 75
静的に構成された DNS サーバー: なし
次のサフィックスで登録します: プライマリのみ
静的に構成された WINS サーバー: なし
なので、""で囲まれた行を findstr /R ".*" 1> nwifs.txt で標準出力を行っています。
するとnwifs.txtは以下のような内容になります。
[nwifs.txt]
インターフェイスの構成 "Loopback Pseudo-Interface 1"
インターフェイスの構成 "イーサネット"
インターフェイスの構成 "イーサネット 2"
この出力結果をもとに
for /f "tokens=2 delims="" %%i in (nwifs.txt) do (
echo %%i
)
で"をデリミタとして2番目の区切り(イーサネット 2など)を変数に格納すればIF名を切り取れると考えたのですが
下記エラーが出力されて正常に動作しません。(echo %%iは.txtから値を引っ張てこれてるかの確認用です。)
現状、正常に動作確認できているのは
netsh interface ipv4 show config | findstr /R ".*" > nwifs.txt
の部分だけです。
delims=に"を指定する方法、またはコマンドでIF名のみを一覧で出力できる方法を
ご存じの方いらっしゃいましたらお力添えいただきたいです。
なるべく多くの人が利用できるようにpythonなど環境構築の必要性がないように作成したいと考えております。
文章があまり得意ではないことやbatは普段書かないので
初心者質問であったり読みづらい部分もあるかと存じますが
よろしくお願い致します。
発生している問題・エラーメッセージ
>netsh interface ipv4 show config | findstr /R \".*\" 1> nwifs.txt コマンドの構文が誤っています。 >for /f "tokens=2 delims="" %i in (nwifs.txt) do (
該当のソースコード
windows
1netsh interface ipv4 show config | findstr /R \".*\" > nwifs.txt 2 3for /f "tokens=2 delims="" %%i in (nwifs.txt) do ( 4 echo %%i 5)
試したこと
delims="" を
delims=^""
delims=""
というようにメタキャラクタを無視させ文字列扱いするようにしましたがそれでも出力はされませんでした。
補足情報(FW/ツールのバージョンなど)
windows10
windows bat
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/27 05:37
2020/12/27 06:52