■66919 / inTopicNo.3) |
Re[1]: cmd.exeでping結果をcsvに書き込む |
□投稿者/ 魔界の仮面弁士 (242回)-(2013/06/05(Wed) 22:49:27)
|
■No66917 (miti さん) に返信
> cmd.exeでIPアドレスを入力しpingで送信して
結果取得が必要なら、C# から直接 Pingクラスを呼び出した方が手っ取り早いと思います。
http://dobon.net/vb/dotnet/internet/ping.html
コマンドシェルから実行したいのであれば、cmd.exe ではなく PowerShell を用いて
WMI の Win32_PingStatus クラスを呼び出すという手もつかえます。
----
$computer = "www.google.com"
$rtn = get-wmiobject -class win32_pingstatus -filter "Address = '$computer'"
If($rtn.StatusCode -ne 0) { "$computer に到達できません" } Else {"$computer から応答がありました"}
----
> 接続できたかどうかの結果をcvsファイルに書き込みしたいです。
cvs というと、バージョン管理ソフト(Concurrent Versions System)を連想しますが、
csv の間違いでしょうか? (Comma-Separated Values)
> のような形式で書き込みしたいです。(またはcmd.exeの結果を直接CVSファイルに書き込みもOK)
Ping.exe の終了コードで判定したいところですが、ERRORLEVEL からでは
正しく判定できないパターンがあるので、文字列解析になってしまいますね。
OS によって、Ping.exe が返す文字列は微妙に異なりますので、
他の OS に移植する際には気を付けてください。
> コードを教えてもらえますか?
それは「質問」では無く、「制作依頼」ですよね…?
たとえば、192.168.0.1〜192.168.0.254 の範囲の結果表を作りたいなら、
-------------------------------------
@ECHO OFF
FOR /L %%f IN (1,1,254) DO (
PING -n 1 -w 50 192.168.0.%%f | FIND "バイト数 =32" > NUL
IF ERRORLEVEL 1 (
ECHO 192.168.0.%%f,NG
) ELSE (
ECHO 192.168.0.%%f,OK
)
)
-------------------------------------
というテキストを「test.cmd」というファイル名で作成しておき、
それを「cmd.exe test.cmd > result.csv」で実行すれば
-------------------------------------
192.168.0.1,NG
192.168.0.2,NG
192.168.0.3,NG
192.168.0.4,OK
192.168.0.5,OK
192.168.0.6,OK
192.168.0.7,OK
192.168.0.8,OK
192.168.0.9,OK
192.168.0.10,OK
192.168.0.11,OK
192.168.0.12,NG
192.168.0.13,OK
(中略)
192.168.0.254,NG
-------------------------------------
と書かれた result.csv が出来上がります。
|
|