我从该网站获得了以下大部分批处理文件,并根据我的需要对其进行了修改:
@echo off
set/p host=host Address:
set logfile=Log_%host%.log
set csfile=pings_%host%.csv
echo Target Host = %host% >%logfile%
netsh interface show interface >>%logfile%
nslookup myip.opendns.com resolver1.opendns.com >>%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>>%csfile%
echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %%A
timeout 1 >NUL
GOTO Ping)
.log文件的输出正是我想要的。 csv文件输出如下所示:
02/16/2016 Tue, 8:02:03,Reply from 173.194.115.33: bytes=32 time=16ms TTL=56
我希望至少能看到这样的事情:
02/16/2016 Tue, 8:02:03,Reply from 173.194.115.33:, bytes=32, time=16ms, TTL=56
最理想的是,我希望csv看起来像这样:
Date,Time,IP,Bytes,Time,TTL
02/16/2016 Tue,8:02:03,173.194.115.33,32,16ms,56
02/16/2016 Tue,8:02:04,173.194.115.33,32,17ms,56
...
如果可能的话,我想远离PowerShell。
谢谢, 乔
答案 0 :(得分:1)
@ECHO OFF
SETLOCAL
SET "destdir=U:\destdir"
set "host=google.com"
set "csfile=%destdir%\pings_%host%.csv"
set "flagfile=%destdir%\flagfile.flg"
:: Ensure flagfile exists
ECHO.>"%flagfile%"
ECHO(Date,Time,IP,Bytes,Time,TTL>"%csfile%"
:PING
IF NOT EXIST "%flagfile%" GOTO :EOF
for /f "tokens=* skip=2" %%A in ('ping %host% -n 1 ') do (
FOR /f "tokens=1,4,6,8,10delims=:= " %%P IN ("%time:~0,2% %%A") DO (
echo %date%,%%P:%time:~3,2%:%time:~6,2%,%%Q,%%R,%%S,%%T>>%csfile%
)
echo %date% %time:~0,2%:%time:~3,2%:%time:~6,2% %%A
timeout 1 >NUL
GOTO Ping)
GOTO :EOF
由于您已经对logfile
处理进行了排序,因此会生成csvfile。为了方便起见,我已经设置了适合我系统的文件名,并将谷歌用于ping。
这会处理
行“8回复173.194.115.33:,bytes = 32,time = 16ms,TTL = 56”
假设“回复”(毫无疑问可以根据需要进行门控)使用的分隔符: = 和空格它只是一个输出日期数据后跟第一个标记,带标点符号的分钟和秒以及剩余所需标记的逗号分隔列表的问题。
我添加了一个在第一个条目上创建的标志文件。如果删除了标志文件,则批处理停止,因此您不必 Ctrl C 来终止该过程。
答案 1 :(得分:0)
您可以使用FOR
循环仅解析您关注的值。
FOR /F "usebackq tokens=1-10 delims==:< " %%A IN (`ping google.com -n 1`) DO (
REM Only process the response line.
IF "%%A"=="Reply" (
ECHO %%C,%%E,%%G,%%I
)
)
此代码段将以下数据放入CSV格式:
IP,字节,时间,TTL
示例输出:
74.125.138.138,32,11ms,43
您应该可以非常轻松地将其调整到您的脚本中。