Board logo

标题: [文本处理] 如何在bat返回的内容后面增加序号? [打印本页]

作者: wh123wh123    时间: 2023-9-17 10:22     标题: 如何在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
复制代码
想在上面代码返回的每行后面增加序号,类似行号似的,如何修改上面的代码?序号要隔空上下对齐
作者: Batcher    时间: 2023-9-17 10:58

回复 1# wh123wh123


    在哪里加序号?ping命令的结果?还是echo命令开头?
作者: yyz219    时间: 2023-9-17 11:45

回复  wh123wh123


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



    应该是:ping命令的结果  后面加
作者: wh123wh123    时间: 2023-9-17 12:04

回复 2# Batcher


    在返回的ping命令的结果后面加序号
作者: wh123wh123    时间: 2023-9-17 12:18

回复 3# yyz219


    是的
作者: wh123wh123    时间: 2023-9-17 12:21

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

回复 2# Batcher


ping命令的结果后面和echo命令开头分别怎么加?
作者: thp2008    时间: 2023-9-17 17:30

本帖最后由 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
复制代码

作者: Five66    时间: 2023-9-17 18:21

再find 或者 findstr 一次?
作者: wh123wh123    时间: 2023-9-17 18:53

回复 8# Five66


    每ping一次就加1作为行号,自动添加大奥返回数据的对应行后面。
作者: 77七    时间: 2023-9-17 22:21

你希望的效果是什么样子的?能不能给个例子?
作者: wh123wh123    时间: 2023-9-17 22:37

回复 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
........就是这样的效果,也就是在返回的内容后面自动补上序号或者叫行号,因为网络偶尔卡一下,所以想用肉眼观察网络稳定性,用序号观察是否在变化。
作者: 77七    时间: 2023-9-17 22:47

本帖最后由 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
复制代码

作者: wh123wh123    时间: 2023-9-17 23:06

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

回复 12# 77七


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

如果出现“网络不通”的话,该行后面不需要补序号。
作者: pd1    时间: 2023-9-17 23:55

  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. }
复制代码

作者: wh123wh123    时间: 2023-9-18 10:48

回复 14# pd1


    就是这样的功能效果,但总感觉哪里不得劲,
作者: aloha20200628    时间: 2023-9-18 18:01


给一个纯P版,网络连通时后缀序号,网络不通时前缀序号。最多尝试次数用imax变量控制。
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::设置尝试次数
  4. set "imax=5"
  5. :top
  6. set/a "i+=1, k=0"
  7. for /f "delims=" %%v in ('ping -n 1 www.baidu.com ^|find /i "TTL" ') do (
  8. set "k=1" &(echo,%%v !i!)
  9. )
  10. if !k! equ 0 (echo,!i!  网络不通)
  11. if !i! geq !imax! (endlocal&exit/b)
  12. goto top
复制代码

作者: 77七    时间: 2023-9-18 21:24

回复 13# wh123wh123


   点击复制代码,我测试正常。
作者: wh123wh123    时间: 2023-9-18 21:37

回复 16# aloha20200628



    来自 89.156.66.18 的回复: 字节=32 时间=23ms TTL=52 67
'k' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
来自 89.156.66.18 的回复: 字节=32 时间=23ms TTL=52 68
'k' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
作者: 77七    时间: 2023-9-18 21:55

回复 18# wh123wh123


   测试16楼代码,正常,你把你用的脚本原件传网盘发上来吧。
作者: wh123wh123    时间: 2023-9-18 22:01

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. ::设置尝试次数
  4. set "imax=500"
  5. :top
  6. set/a "i+=1, k=0"
  7. for /f "delims=" %%v in ('ping -n 1 www.baidu.com ^|find /i "TTL" ') do (
  8. set "k=1" &(echo,%%v !i!)
  9. )
  10. if !k! equ 0 (echo,!i!  网络不通)
  11. if !i! geq !imax! (endlocal&exit/b)
  12. goto top
复制代码
回复 17# 77七
作者: 77七    时间: 2023-9-18 22:04

回复 20# wh123wh123


   测试正常。
需要看脚本文件原件。
作者: wh123wh123    时间: 2023-9-18 22:19

回复 21# 77七


    文件编码ANSI的bat文件
作者: 77七    时间: 2023-9-18 22:35

回复 22# wh123wh123


   检查下换行符号。
作者: wh123wh123    时间: 2023-9-18 22:41

回复 23# 77七


    你把16楼保存为文本文件上传上来,我下载看看有什么不同




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2