[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 如何在bat返回的内容后面增加序号?

  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. :top
  4. ping -n 1 www.baidu.com | find /I "TTL" && goto top
  5. echo  网络不通
  6. goto top
复制代码
想在上面代码返回的每行后面增加序号,类似行号似的,如何修改上面的代码?序号要隔空上下对齐

回复 1# wh123wh123


    在哪里加序号?ping命令的结果?还是echo命令开头?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复  wh123wh123


    在哪里加序号?ping命令的结果?还是echo命令开头?
Batcher 发表于 2023-9-17 10:58



    应该是:ping命令的结果  后面加
我是小白,希望老师多多帮助

TOP

回复 2# Batcher


    在返回的ping命令的结果后面加序号

TOP

回复 3# yyz219


    是的

TOP

本帖最后由 wh123wh123 于 2023-9-17 12:41 编辑

回复 2# Batcher


ping命令的结果后面和echo命令开头分别怎么加?

TOP

本帖最后由 thp2008 于 2023-9-17 17:32 编辑
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set count=0
  4. :top
  5. ping -n 1 www.baidu.com | find /I "TTL" || (
  6.     set /a count+=1
  7.     echo !count!     网络不通
  8. )
  9. ping -n 1 www.baidu.com | find /I "TTL" && (
  10.     cls
  11. )
  12. goto top
复制代码
感觉这个频率有点高,可以加点延时。


下面这个慢一点
  1. @echo off
  2. setlocal EnableDelayedExpansion
  3. set count=0
  4. :top
  5. ping -n 1 www.baidu.com | find /I "TTL" || (
  6.     set /a count+=1
  7.     echo !count!     网络不通
  8. )
  9. ping -n 3 127.0.0.1 > nul
  10. goto top
复制代码

TOP

再find 或者 findstr 一次?

TOP

回复 8# Five66


    每ping一次就加1作为行号,自动添加大奥返回数据的对应行后面。

TOP

你希望的效果是什么样子的?能不能给个例子?
bat小白,请多指教!谢谢!

TOP

回复 10# 77七


来自 87.156.66.18 的回复: 字节=32 时间=23ms TTL=52   1
来自 87.156.66.18 的回复: 字节=32 时间=23ms TTL=52    2
来自 87.156.66.18 的回复: 字节=32 时间=23ms TTL=52    3
来自 87.156.66.18 的回复: 字节=32 时间=23ms TTL=52    4
来自 87.156.66.18 的回复: 字节=32 时间=23ms TTL=52    5
来自 87.156.66.18 的回复: 字节=32 时间=23ms TTL=52    6
来自 87.156.66.18 的回复: 字节=32 时间=23ms TTL=52    7
来自 87.156.66.18 的回复: 字节=32 时间=23ms TTL=51    8
来自 87.156.66.18 的回复: 字节=32 时间=23ms TTL=52    9
来自 87.156.66.18 的回复: 字节=32 时间=23ms TTL=52    10
来自 87.156.66.18 的回复: 字节=32 时间=23ms TTL=50    11
来自 87.156.66.18 的回复: 字节=32 时间=23ms TTL=52    12
........就是这样的效果,也就是在返回的内容后面自动补上序号或者叫行号,因为网络偶尔卡一下,所以想用肉眼观察网络稳定性,用序号观察是否在变化。

TOP

本帖最后由 77七 于 2023-9-17 22:56 编辑

回复 11# wh123wh123


  1. @Echo Off
  2. rem http://www.bathome.net/redirect.php?goto=findpost&ptid=1246&pid=164208
  3. SetLocal EnableDelayedExpansion
  4. :loop
  5. (For /F "delims=" %%i In ('ping -n 1 www.baidu.com ^| find /I "TTL"') Do (
  6. set /a n+=10001
  7. Set L1=%%i                                   
  8. Echo !L1:~0,45! [ !n:~-4! ]
  9. )) || (
  10. set /a n+=10001
  11. set str=网络不通                                                            
  12. echo !str:~0,50! [ !n:~-4! ]
  13. )
  14. timeout 1 >nul
  15. goto :loop
复制代码
bat小白,请多指教!谢谢!

TOP

本帖最后由 wh123wh123 于 2023-9-17 23:11 编辑

回复 12# 77七


    'str' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
~0,50n:~-4 ]
'?' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
'str' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
~0,50n:~-4 ]
'?' 不是内部或外部命令,也不是可运行的程序

如果出现“网络不通”的话,该行后面不需要补序号。

TOP

  1. <# :
  2. @echo off
  3. powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0' |Out-String|Invoke-Expression"
  4. pause
  5. #>
  6. $n=1
  7. while($true){
  8. $result=ping -n 1 www.baidu.com
  9. if($result.Length -eq 40){"网络不通"}
  10. else{$result|?{$_.contains("TTL")}|%{$_+" "+$n;$n=$n+1;sleep 1}
  11. }
  12. }
复制代码

TOP

回复 14# pd1


    就是这样的功能效果,但总感觉哪里不得劲,

TOP

返回列表