IP のリストを取得して nslookup を実行し、2 つの異なるファイルに保存するプログラムがあります。1 つは IP が含まれているファイルで、もう 1 つは nslookup の出力だけです。nslookup への呼び出しを半分に減らすには、一度呼び出して変数に格納し、両方のファイルに書き込みます。しかし、単純な店は機能しません。
set val=nslookup %ip%
ディスプレイ
nslookup 127.0.0.1
実行した結果ではありません。
これを行う1つの方法を見つけました
nslookup %ip% | find "Name"> tempFile
set /P result=<tempFile
しかし、私は今、ファイルに書き込んでから値を取り戻しています。そのコストのために、nslookup を 2 回呼び出すこともできます。また、単一の行を選択する必要があります (今回はこれで問題ありませんが、他の場合には機能しない可能性があります)。
for ループ トリックも使用してみました
for /f "delims=" %%a in ('nslookup %ip% ^| find "Name"') do set name=%%a
しかし、これは最後の行またはfindで指定した1行のみを返します。一時ファイルがないため、前の例よりも優れていますが、まだ不完全です。
したがって、私の質問は、コマンドからの戻り値を変数に格納するためのより良い方法があるかどうかです。
編集:検討してください
nslookup 127.0.0.1
返す
Server: fake.com
Address: 0.0.0.0
Name: localhost
Address: 127.0.0.1
今、私が欲しいのは名前だけなので、現在のバッチ ファイルでは 1 行を返すだけで機能します。しかし、サーバーについても知る必要がある場合はどうでしょうか。
for /f "delims=" %%a in ('nslookup 127.0.0.1') do set returnVal=%%a
echo %returnVal%
表示する
Server: fake.com
Address: 0.0.0.0
Name: localhost
Address: 127.0.0.1
現在は表示のみ
Address: 127.0.0.1