実現したいこと
・バッチファイルでnslookupでurlからIPアドレスを取得したい。
・取得した結果を変数化したい。
発生している問題・分からないこと
・「@echo off」にしているが下記のようにコマンドプロンプト画面に表示されてしまう。
コマンドプロンプト画面に表示させないようにしたい。
出力例①:*** dns.google がxxxx.xxxx.jp を見つけられません: Non-existent domain
出力例②:権限のない回答:
・nslookupの結果からIPアドレスが2つ取得した場合に両方とも利用したい。
下記出力イメージだと、111.222.333.444、555.666.777.888を変数に入力したい。
出力例:
サーバー: dns.google
Address: 8.8.8.8
権限のない回答:
名前: aaa.bbbb.jp
Addresses: 111.222.333.444
555.666.777.888
該当のソースコード
@echo off setlocal enabledelayedexpansion set "DNS_SERVERS=8.8.8.8 8.8.4.4" set "LOG_FILE=log.txt" rem 複数のDNSサーバで名前解決を試みる set "DNS_SUCCESS=0" rem パラメータ初期化 set "IP_ADDRESSES=" for %%d in (%DNS_SERVERS%) do ( for /f "skip=1 tokens=2 delims=:" %%j in ('nslookup !HOST! %%d ^| findstr /r /c:"Address"') do ( if "%%j" NEQ " " ( echo --------->> %LOG_FILE% echo %%j >> %LOG_FILE% echo %%j | findstr /v "権限のない回答" > nul if !errorlevel! == 0 ( set "DNS_SUCCESS=1" if "!IP_ADDRESSES!" == "" ( set "IP_ADDRESSES=%%j" echo --------->> %LOG_FILE% echo !IP_ADDRESSES!>> %LOG_FILE% ) else ( set "IP_ADDRESSES=!IP_ADDRESSES! %%j" echo --------->> %LOG_FILE% echo !IP_ADDRESSES!>> %LOG_FILE% ) ) ) ) )
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
copilotで試してみたが回答が得られなかった。
【前提】
・windowsのOSはwindows10、またはwindows11を利用する。
・PowerShellは使わない。
・バッチファイルで下記のやりたいことを実装したい。
【やりたいこと】
・for文の中でgoto分を利用するとエラーになるためgoto文を使わないやり方にしたい。
・callでの呼び出しは使わないやり方にしたい。
・exitではなくbreakでfor文を抜けるようにしたい。
・nslookupで複数IPアドレスが取得できた場合は、取得できたIP全てに対して利用したいコマンドを処理したい。
・nslookupの結果をAddressで絞った場合、1行目はDNSのIPアドレスになることを考慮してほしい。
・nslookupの結果でAddressで絞るとAddressが行にないIPアドレスが漏れてしまうことを考慮してほしい。
補足
特になし

回答2件
あなたの回答
tips
プレビュー