标题: [文本处理] for /f语句中如何准确获得想要的行 [打印本页]
作者: pgydgs 时间: 2008-12-27 22:13 标题: for /f语句中如何准确获得想要的行
一个文本中可能有很多行(K行)
但是我只想提取其中第N行(0<N<K)
用skip只能跳过开头的行
如何能省略N+1到K行的内容呢??
作者: lhjoanna 时间: 2008-12-27 23:46
设置一个计数器,循环一次加一,循环到N次后跳出循环。
作者: Batcher 时间: 2008-12-27 23:50
获取目标行以后,使用goto命令跳出for循环。
作者: slore 时间: 2008-12-28 00:53
for /f "skip=.."...do (
xxxx
goto :ExitFor
)
:ExitFor
作者: pgydgs 时间: 2008-12-28 11:18
感谢各位的回复
但是我还是有些想不明白
比如说- @echo off
- @ping -n 1 -r 9 www.baidu.com >temp.txt
- for /f "skip=3 tokens=2 delims=:-" %%a in (temp.txt) do echo %%a
- pause
- del temp.txt
复制代码
想法就是想得到外网的IP地址
(很白痴 别笑话我 哈哈)
但是我无法略过后面的一些行
虽然IP能显示出来
我现在想把变量b赋值成第一行的IP地址
怎么能做到呢?
跳出?
我尝试过在DO后面加上通配符 但是不行
怎么能在DO后面判断现在的%%a是我想要的字符串呢?
作者: yslyxqysl 时间: 2008-12-28 13:09
- @for /f "tokens=1,* delims=:-" %%a in ('ping -n 1 -r 9 www.baidu.com^|findstr /n "."^|findstr "^4:"') do @echo %%b
复制代码
作者: lhjoanna 时间: 2008-12-28 14:02
你是想得到确切的ip地址还是包含ip地址的行,把ping后的结果贴上来吧,我这里加了参数-r后request time out。
作者: pgydgs 时间: 2008-12-28 19:49
原帖由 yslyxqysl 于 2008-12-28 13:09 发表
@for /f "tokens=1,* delims=:-" %%a in ('ping -n 1 -r 9 www.baidu.com^|findstr /n "."^|findstr "^4:"') do @echo %%b
这个的确可行 先说谢谢 呵呵
但是能否为我解答一下什么是
findstr /n
还有4:是什么
还有为啥变量到后来是%%b而不是%%a
问题很多 不好意思
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |