求批处理-对a.txt文件中指定列IP进行PING,将PING的网络状态及PING的时间在a.txt基础上追加写入到b.txt

a.txt文件格式(对IP地址列逐行进行PING)ID,SbName,SbID,DepID,IP,Remark,UserName1,PC1,1,3,172.28.59.3... a.txt文件格式(对IP地址列逐行进行PING)
ID,SbName,SbID,DepID,IP,Remark,UserName
1,PC1,1,3,172.28.59.3,OK,admin
2,PC2,2,3,172.28.53.23,OK,admin
3,PC3,3,3,172.28.53.13,OK,admin
...
b.txt文件格式(对指定的列PING后将结果在a.txt文件的基础上追加PING的状态和时间并写入b.txt,时间格式为2014091108--年月日时分)
ID,SbName,SbID,DepID,IP,Remark,UserName,NETstate,Time
1,PC1,1,3,172.28.59.3,OK,admin,在线,201409110805
2,PC2,2,3,172.28.53.23,OK,admin,在线,201409110807
3,PC3,3,3,172.28.53.13,LK,admin,在线,201409110809
...
对以上实现写一个批出理文件,由于行数较多,效率越高越好,可模仿如下代码:

@echo off
set f1=ip.txt
set f2=pingRecord.txt
set "ss=Lost Average"
set net=断&set average=loss
set/p=请等候... <nul
(echo IP 地 址 网络状态 Lost Average
echo ====================================)>"%f2%"
for /f "usebackq" %%i in ("%f1%")do (
title. Pinging %%i
set "ip=%%i "
setlocal enabledelayedexpansion
set ip=!ip:~,15!
for /f "tokens=*" %%j in ('ping -w 300 %%i^|findstr "%ss%"')do (
set "h=%%j"
for %%k in (%ss%)do set "h=!h:*%%k=!"
for /f "tokens=1,2 delims==( " %%x in ("!h!")do (
if "%%y"=="" (set net=通&set average=%%x)else set "loss= %%y"
)
)
>>"%f2%" echo !ip! 网络!net! !loss:~-4! !average!
endlocal
)
title .&cls
set/p=按任意键退出... <nul&pause>nul
展开
 我来答
yyykkkyyyy
推荐于2016-01-11 · TA获得超过3136个赞
知道大有可为答主
回答量:2691
采纳率:40%
帮助的人:3313万
展开全部
@echo off&color f1
setlocal enabledelayedexpansion
set "f1=a.txt"
set "f2=b.txt"
set/p item=<"%f1%"
set js="usebackq skip=1 tokens=1-7 delims=,"
for /L %%i in (1,1,52)do set "fe=!fe!="
(echo %item%,NETstate,Time
 echo %fe%
 for /f %js% %%a in ("%f1%") do (
     echo !time:~,8! Ping %%e
     >nul ping -n 1 %%e&&(
          set state=在线&set/a on+=1)||(set state=断线&set/a off+=1)
     title pinging %%e ... 累计 通/断 = !on! / !off!
     set "ptime=!date:~,4!!date:~5,2!!date:~8,2!!time:~,2!!time:~3,2!"
     echo %%a,%%b,%%c,%%d,%%e,%%f,%%g,!state!,!ptime: =0!
))>"%f2%"
set/a m=on+off
title ping 文件%f1% 中所列IP测试结束 ... %on% + %off% = %m%
echo;&echo 共Ping IP %m% 个 (通 %on% 个, 不通 %off% 个) 
set/p=已记录到文件%f2%中。请按任意键退出... <nul&pause>nul
更多追问追答
追问

感谢回答,结果有点小问题:

1、期望的结果是这样的,不改变a.txt格试,在原来的基础对应的行上增加两列:

另外,还有个想法,此批处理文件每天会定时运行,每次运行产生的新数据希望都在b.txt原有数据的基础上追加(不清空原数据),注意,首次运行产生表头,以后定时运行只追加新数据记录而不需要表头。谢谢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式