Board logo

标题: [文本处理] 【已解决】开启了变量延迟,为什么for结果还是不能正常赋值? [打印本页]

作者: zds612    时间: 2017-12-2 16:32     标题: 【已解决】开启了变量延迟,为什么for结果还是不能正常赋值?

本帖最后由 zds612 于 2017-12-5 11:21 编辑

小白一个,想要获取一个ping结果文本的丢包率

希望通过两次for来获取并赋值,但是总是不成功,求指导

或者是否有更优雅的方式实现?求例子,谢谢!
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=2 delims=(" %%i in ('find "数据包" d:\ping_test.txt') do set "mc = %%i"
  4. echo %mc%
  5. rem for /f "tokens=1 delims= " %%i in (%mc%) do echo %%i
  6. pause
复制代码
ping_test.txt内容
  1. 正在 Ping 132.147.176.50 具有 32 字节的数据:
  2. 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
  3. 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
  4. 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
  5. 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
  6. 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
  7. 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
  8. 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
  9. 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
  10. 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
  11. 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
  12. 132.147.176.50 的 Ping 统计信息:
  13.     数据包: 已发送 = 10,已接收 = 10,丢失 = 0 (0% 丢失),
  14. 往返行程的估计时间(以毫秒为单位):
  15.     最短 = 0ms,最长 = 0ms,平均 = 0ms
复制代码

作者: Blitz    时间: 2017-12-2 16:54

本帖最后由 Blitz 于 2017-12-2 17:09 编辑

把第一个for的set  "mc = %%i"等号两边的空格去掉就行了
变量延迟也没必要开
第二个for也可以删掉
分隔符换成中文逗号似乎好点
  1. @echo off
  2. for /f "tokens=3 delims=," %%i in ('find "数据包" d:\ping_test.txt') do set "mc=%%i"
  3. echo %mc%
  4. pause
复制代码
想了一下你应该是想获取到0这个数字:
  1. @echo off
  2. for /f "tokens=3 delims=," %%i in ('find "数据包" ping_test.txt') do set "mc=%%i"
  3. for /f "tokens=3" %%a in ("%mc%") do echo %%a
  4. pause
复制代码

作者: yhcfsr    时间: 2017-12-2 19:00

回复 2# Blitz


    楼主所言甚是,其他语言搞个空格没事,这里就行通了。
作者: zds612    时间: 2017-12-5 11:21

回复 2# Blitz


    非常感谢,新手遇到此类问题,死活找不出问题,真是蛮头疼的,还好有之家大侠相助,再次感谢!




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