标题: [文本处理] 【已解决】开启了变量延迟,为什么for结果还是不能正常赋值? [打印本页]
作者: zds612 时间: 2017-12-2 16:32 标题: 【已解决】开启了变量延迟,为什么for结果还是不能正常赋值?
本帖最后由 zds612 于 2017-12-5 11:21 编辑
小白一个,想要获取一个ping结果文本的丢包率
希望通过两次for来获取并赋值,但是总是不成功,求指导
或者是否有更优雅的方式实现?求例子,谢谢!- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=2 delims=(" %%i in ('find "数据包" d:\ping_test.txt') do set "mc = %%i"
- echo %mc%
- rem for /f "tokens=1 delims= " %%i in (%mc%) do echo %%i
- pause
复制代码
ping_test.txt内容- 正在 Ping 132.147.176.50 具有 32 字节的数据:
- 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
- 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
- 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
- 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
- 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
- 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
- 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
- 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
- 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
- 来自 132.147.176.50 的回复: 字节=32 时间<1ms TTL=64
-
- 132.147.176.50 的 Ping 统计信息:
- 数据包: 已发送 = 10,已接收 = 10,丢失 = 0 (0% 丢失),
- 往返行程的估计时间(以毫秒为单位):
- 最短 = 0ms,最长 = 0ms,平均 = 0ms
复制代码
作者: Blitz 时间: 2017-12-2 16:54
本帖最后由 Blitz 于 2017-12-2 17:09 编辑
把第一个for的set "mc = %%i"等号两边的空格去掉就行了
变量延迟也没必要开
第二个for也可以删掉
分隔符换成中文逗号似乎好点- @echo off
- for /f "tokens=3 delims=," %%i in ('find "数据包" d:\ping_test.txt') do set "mc=%%i"
- echo %mc%
- pause
复制代码
想了一下你应该是想获取到0这个数字:- @echo off
- for /f "tokens=3 delims=," %%i in ('find "数据包" ping_test.txt') do set "mc=%%i"
- for /f "tokens=3" %%a in ("%mc%") do echo %%a
- pause
复制代码
作者: yhcfsr 时间: 2017-12-2 19:00
回复 2# Blitz
楼主所言甚是,其他语言搞个空格没事,这里就行通了。
作者: zds612 时间: 2017-12-5 11:21
回复 2# Blitz
非常感谢,新手遇到此类问题,死活找不出问题,真是蛮头疼的,还好有之家大侠相助,再次感谢!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |