web-dev-qa-db-ja.com

ping結果をテキストファイルに書き込むためのバッチファイル

これは既に質問された質問のバリエーションであることは知っていますが、調査といくつかの失敗した試行の後、私はいくつかの助けが必要だと思います。

2つのWebサイトに繰り返しpingを実行し、時間と結果をテキストファイルに記録します。

私はこの質問を見つけました テキストファイルにPing出力を保存する 非常に役に立ちましたが、私が試したいくつかのバージョンは機能しません。

コマンドウィンドウで次のコマンドを実行すると、繰り返しpingが正しく記録されると予想されるように、ユーザーディレクトリにテキストファイルが作成されます。

ping xxx.xxx.xxx.xxx -t > filename.txt

しかし、次のping.datファイルを作成してデスクトップに保存するとします。私がそれを実行すると、ジャストタイムが含まれているcmdウィンドウが開き、デスクトップに目的のテキストファイルが作成されます。残念ながら、ファイルには時間のみが含まれ、pingの結果は含まれていません。また、結果は予想どおり3秒離れていないことは明らかです。

@ECHO OFF
:LOOPSTART
time /T
ping xxx.xxx.xxx.xxx -n 4 >> filename.txt
ping yyy.yyy.yyy.yyy -n 4 >> filename.txt
sleep -m 3000
GOTO LOOPSTART

私の問題は結果をどのように書き込もうとしているかに関係していると思いましたが、バッチファイルを変更した場合、「>> filename.txt」参照を削除すると、タイムウィンドウがすぐに表示されるcmdウィンドウが開きます。

@ECHO OFF
:LOOPSTART
time /T
ping xxx.xxx.xxx.xxx -n 4
ping yyy.yyy.yyy.yyy -n 4
sleep -m 3000
GOTO LOOPSTART

したがって、私の質問は

A)私が間違っていることは何か考えていますか?

B)タイムスタンプを変更してHH:MMではなくHH:MM:SSにするにはどうすればよいですか?

すべての助けに感謝します。

S。

@ LInker3000返信ありがとうございます。私はこれを私の元の質問で述べるべきでしたが、私はすでにそれを試しました。タイムスタンプに「>> filename.txt」を追加すると、「別のプロセスによって使用されているため、プロセスはファイルにアクセスできません」というコマンドウィンドウが表示されます。プロセスを終了すると、作成されたtxtファイルには1つのタイムスタンプと「バッチジョブの終了(Y/N)」テキストのみが含まれます。

2
SC.

ファイルのタイムスタンプも必要な場合は、次のように入力する必要があります。

time /T >> filename.txt

あなたが引用した最初の例では:

@ECHO OFF
:LOOPSTART
time /T >> filename.txt
ping xxx.xxx.xxx.xxx -n 4 >> filename.txt
ping yyy.yyy.yyy.yyy -n 4 >> filename.txt
sleep -m 3000
GOTO LOOPSTART

次のコードを試して、より構成可能なタイムスタンプを取得できます。

set time_hh=%time:~0,2%
if %time_hh% lss 10 (set time_hh=0%time:~1,1%)
set time_mn=%time:~3,2%
set time_ss=%time:~6,2%
set time_ms=%time:~9,2%

echo %time_hh%:%time_mn%:%time_ss%.%time_ms% >> filename.txt

time/t ...行の代わりにこれらすべてを配置します

3
Linker3000

秒(およびミリ秒)を取得するには、time /Techo %time%に置き換えて、次のようにします。

@ECHO OFF
:LOOPSTART
echo %time% >> filename.txt
ping xxx.xxx.xxx.xxx -n 4 >> filename.txt
ping yyy.yyy.yyy.yyy -n 4 >> filename.txt
sleep -m 3000
GOTO LOOPSTART
2
imtheman
@ECHO OFF

:SERVER1    

for /F "tokens=* skip=2" %%A in ('ping -n 1 0.0.0.1 ') do (
   echo %date% %time% %%A >>filename.txt
   goto SERVER2 
)

:SERVER2

for /F "tokens=* skip=2" %%A in ('ping -n 1 0.0.0.1 ') do (
   echo %date% %time% %%A >>filename.txt
   goto SERVER1
)

EXIT
0
server

私のテンプレートを試してみてください。ホストIPを要求されます。それを.batとして保存して実行します。プロンプトが表示されたら、ホストIPを入力します。

@echo off

set/p Host=host Address: 
set logfile=Log_%Host%.log

echo Target Host = %Host% >%logfile%
for /f "tokens=*" %%A in ('ping %Host% -n 1 ') do (echo %%A>>%logfile% && GOTO Ping)
:Ping
for /f "tokens=* skip=2" %%A in ('ping %Host% -n 1 ') do (
    echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %%A>>%logfile%
    echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %%A
    timeout 1 >NUL 
    GOTO Ping)
0
Ahmer Khawaja