2016-05-25 15 views
2

これは状況です。私は、非常に大きなテキストファイルには、多くの異なるIPアドレスが含まれています。これらのIPアドレスのすべてのホスト名を解決するために、バッチファイルを作成するか、ジョブを完了させるものを作成します。pingからホスト名を取得し、結果をテキストに保存します

現在、の場合、IPアドレスは1行に1つずつaddresses.txtというファイルに格納されています。

@echo off 
for /f "delims=" %%a in (addresses.txt) do ping -a %%a >> PING_LOG.txt && (echo %%a Passed) || (echo %%a Failed) 
pause 

これは大丈夫動作しているようです:

は、私はまた、次のコードでバッチファイルを持っています。私のテキストファイルには、pingの結果がすべて入っています。 私は私の出力ファイルに書き込まれるように、私はpingを実行アドレスとホスト名を欲しい:ホスト名、回答、統計情報、パケットなどここで

が問題です。私はこれを達成できる方法はありますか?バッチコマンドを介して?他の手段(例えば、出力ファイルを取り出し、それを実行して情報を取得するなど)によって、私はまだ私が把握できるものを見たいと積極的に努力していますが、どんな助けも非常に高く評価されます。

(最終的な目標は、Excelスプレッドシートのサイド・バイ・サイドにホスト名とアドレスを配置することで、手動でそれをやって彼らの何千もの文字通りある考えるとひどい音)

MY FINAL SOLUTION

@echo off 
setlocal EnableDelayedExpansion 
for /f "tokens=*" %%A in (addresses.txt) do (
    set "_res=%%A" 
    for /f "tokens=2" %%B in ('^(nslookup %%A ^) ^| findstr /c:"Name:"') do set "_res=!_res!, %%B" 
    echo !_res! >> LOG.txt 
    echo !_res! 
) 
endlocal 

助けのためのドミトリーと重力のおかげで^

次は、私がデータを取って、スプレッドシート(​​ただ一つの列)にそれを落としました。私は、各セルを見て、デリミタとしてコンマを使って文字列配列にデータを分割し、結果の各文字列を横に並べて(ip | name)並べるマクロスクリプトを書いた。

+1

を生成するIPアドレスへのpingをしません(通常は)ホスト名を返しますあなたのためにそのIPアドレスの。 'nslookup'の機能は、あなたが必要とするものです。しかし、あなたは、" ...私のファイルをすべての結果で満たすことができます。** hostname ** ... "_人々は 'ping'の結果でホスト名を参照していますが、ここでの使用はお勧めしません。 – gravity

+0

@gravity: 'ping -a'は通常そうです。 – Stephan

+0

@gravity -aは必要な情報を得ていましたが、正しいですが、nslookupが優れています。私はそれを完全に忘れてしまった。ドミトリーからnslookupを使って解決策を書き直してみようと思います。私が思いつくものは何でも投稿します。 – Thomas

答えて

0

パスping ...コマンドfindstrに次いで第2 forループにおける出力解析:

@echo off 
setlocal EnableDelayedExpansion 
for /f "tokens=*" %%A in (addresses.txt) do (
    set "_res=%%A" 
    for /f "tokens=2" %%B in ('^(ping -a %%A ^&^& echo --- ok^|^| echo --- failed^) ^| findstr /c:" [" /c:"---"') do set "_res=!_res!, %%B" 
    echo !_res! 
) 
endlocal 

addresses.txt

8.8.8.8 
88.88.77.77 

について

8.8.8.8, google-public-dns-a.google.com, ok 
88.88.77.77, ti0150a400-1603.bb.online.no, failed 
+0

ほぼ完璧なソリューションです。私はテキストファイルへの出力が必要でしたので、私はこの変更を行いました: 'echo!_res! >> LOG.txt'で動作しているようです。唯一のことは、コマンドウィンドウの進行状況を追跡する方法がないからです。コマンドウィンドウとテキストファイルの両方に出力する方法はありますか? – Thomas

+0

最初の 'echo'の後ろにもう一つの 'echo!_res!'を追加するだけです。 –

+0

それはうまくいった。あなたのためのもう一つの質問。 nslookupを使用しようとしています。限り、私はトークンは、最初の行を参照してくださいと言うことができ、私はnslookup(またはping-aの過去8何か)から応答情報のいずれかをつかむことができるように見えることはできません。これはどのくらい正確に機能しますか? (nslookupは速く応答し、何千もの人がいると考えると、もっとうまくいくと思う) – Thomas

関連する問題