Ping特定主机并将结果移动到文件,每小时显示当前时间戳

时间:2015-04-06 04:48:39

标签: windows batch-file cmd ping

我正在尝试创建一个批处理文件,该文件ping特定主机并将结果移动到每小时带有当前时间戳的文件。我能够连续做到,但我想知道是否有任何脚本可以设置运行ping命令的时间间隔。

我能够成功打印时间戳,ping响应以及能够使用当前时间戳更改文件名,但它会不断发生。我希望在一段时间间隔内完成,例如4小时连续ping,然后将结果移动到文件中。

请帮助

2 个答案:

答案 0 :(得分:1)

只有 sane 方法才能使用命令脚本执行此操作。

我建议编写一个执行请求操作一次的脚本。 使用Windows任务计划程序每小时调用一次脚本。

答案 1 :(得分:0)

我所尝试的是 NO 意味着一种理想的,更不精确的方法来做你想做的事情(纯粹是批量),不过通过一些调整和改进,或者作为更有经验的批处理脚本的类似脚本的潜在路由/模板,我相信它可能有用:

@echo off
setlocal enabledelayedexpansion

for /f "tokens=1-2 delims=:" %%i in ('echo %time%') do (
set /a hour=%%i+4
set /a minute=%%j
set expected=!hour!:!minute!
echo !expected!
)

for /f "tokens=*" %%i in ('ping 192.168.1.1 -n 1') do (echo %%i>pinglog.txt && goto PING)

:PING
for /f "tokens=1-2 delims=:" %%i in ('echo %time%') do (
set current=%%i:%%j
echo !current!
)
if !current!==!expected! (
goto EOF
) else (
for /f "tokens=* skip=2" %%i in ('ping 192.168.1.1 -n 2 -w 30000') do (
echo %date% %time% %%i>>pinglog.txt && goto PING
)
)

通过在以下行中添加相关值来控制小时或分钟间隔:

set /a hour=%%i+4 rem Here I've added 4 hours
set /a minute=%%j

如果您不希望在cmd输出中看到时间进展,请删除echo !expected!echo !current!行,这可以在脚本运行时最小化。