找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22795|回复: 7

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

[复制链接]
发表于 2008-12-27 22:13:50 | 显示全部楼层 |阅读模式
一个文本中可能有很多行(K行)
但是我只想提取其中第N行(0<N<K)
用skip只能跳过开头的行
如何能省略N+1到K行的内容呢??
发表于 2008-12-27 23:46:58 | 显示全部楼层
设置一个计数器,循环一次加一,循环到N次后跳出循环。
发表于 2008-12-27 23:50:10 | 显示全部楼层
获取目标行以后,使用goto命令跳出for循环。
发表于 2008-12-28 00:53:12 | 显示全部楼层
for /f "skip=.."...do (
xxxx
goto :ExitFor
)
:ExitFor
 楼主| 发表于 2008-12-28 11:18:21 | 显示全部楼层
感谢各位的回复
但是我还是有些想不明白
比如说
  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是我想要的字符串呢?
发表于 2008-12-28 13:09:42 | 显示全部楼层
  1. @for /f "tokens=1,* delims=:-" %%a in ('ping -n 1 -r 9 www.baidu.com^|findstr /n "."^|findstr "^4:"') do @echo %%b
复制代码
发表于 2008-12-28 14:02:43 | 显示全部楼层
你是想得到确切的ip地址还是包含ip地址的行,把ping后的结果贴上来吧,我这里加了参数-r后request time out。
 楼主| 发表于 2008-12-28 19:49:00 | 显示全部楼层
原帖由 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

问题很多 不好意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 03:37 , Processed in 0.021571 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表