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

[文本处理] for /f语句中如何准确获得想要的行

一个文本中可能有很多行(K行)
但是我只想提取其中第N行(0<N<K)
用skip只能跳过开头的行
如何能省略N+1到K行的内容呢??

设置一个计数器,循环一次加一,循环到N次后跳出循环。

TOP

获取目标行以后,使用goto命令跳出for循环。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

for /f "skip=.."...do (
xxxx
goto :ExitFor
)
:ExitFor

TOP

感谢各位的回复
但是我还是有些想不明白
比如说
  1. @echo off
  2. @ping -n 1 -r 9 www.baidu.com >temp.txt
  3. for /f "skip=3 tokens=2 delims=:-" %%a in (temp.txt) do echo %%a
  4. pause
  5. del temp.txt
复制代码
想法就是想得到外网的IP地址
(很白痴 别笑话我 哈哈)
但是我无法略过后面的一些行
虽然IP能显示出来
我现在想把变量b赋值成第一行的IP地址
怎么能做到呢?
跳出?
我尝试过在DO后面加上通配符 但是不行
怎么能在DO后面判断现在的%%a是我想要的字符串呢?

TOP

  1. @for /f "tokens=1,* delims=:-" %%a in ('ping -n 1 -r 9 www.baidu.com^|findstr /n "."^|findstr "^4:"') do @echo %%b
复制代码

TOP

你是想得到确切的ip地址还是包含ip地址的行,把ping后的结果贴上来吧,我这里加了参数-r后request time out。

TOP

原帖由 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

问题很多 不好意思

TOP

返回列表