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

[特效代码] [已解决]批处理如何查找文本中含有指定字符串nnf的行并输出到新的文本

[复制链接]
发表于 2009-7-31 11:08:16 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-8-4 13:31 编辑

我想查找123.txt中含有字符nnf的行,并设置为变量,输出到112.txt
123.txt内容是
(nnf= 0.12 ;)
qwe 021
dsagggggggggggaga
(nnf= -452.2 ;)
ffffddd
(nnf= -0.15 ;)
2454253543543

我的代码
  1. for /f %%i in ('type 123.txt^|findstr /i "nnf"') do set o=%%i
  2. set o=%i:* =%
  3. set o=%i:~5,-2%
  4. echo %o%>>112.txt
复制代码
执行到第二行就有问题了,因为在查找行中含有空格
我想要的是结果是,112.txt内容为
0.12
-452.2
-0.15

请各位帮帮忙

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢主动给标题标注[已解决]字样

查看全部评分

发表于 2009-7-31 11:28:43 | 显示全部楼层
(nnf= 0.12 ;) 这行格式都相同吗 如是就简单了

for /f "tokens=2" %%i in ('type 123.txt^|findstr /i "nnf"') do echo %%i>>112.txt
 楼主| 发表于 2009-7-31 11:48:16 | 显示全部楼层

回复 2楼 的帖子

恩,就是这样
不知道 "tokens=2" 是什么意思
如果我想将寻找到的第1个值输入到1.txt ,第2个值输入到a.txt
,第3个值输入到q.txt
又该怎样改呢
谢谢回复
发表于 2009-7-31 11:51:34 | 显示全部楼层

回复 3楼 的帖子

你要输入到的目标文本名字没有规律的么,东一个西一个的话就只等逐条重定向。没多大意义。
发表于 2009-7-31 12:08:13 | 显示全部楼层
完整应该如下:
for /f "tokens=2 delims= " 以空格为分隔符,输出第二列。 空格为分隔时可省略delims=  。这样就把第一列nnf= 和第三列 ;过滤掉,只取第二列数字部分赋给%%i 。

如果每个变量值输出到不同文件。要批处理的话,这些文件必须要有一定的规律,否则只有手动处理或最机械的办法。如下例可供你参考一下。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "tokens=2" %%i in ('type 123.txt^|findstr /i "nnf"') do (
  3. set /a n+=1
  4. echo;%%i>>a!n!.txt
  5. )
  6. pause
复制代码
它将把第一个输出到a1.txt ,第二个输出到a2.txt 依次类推。如果没规律可循也可以加if 判断(笨办法)
if !n! equ 1 echo;%%i 第一个值处理
if !n! equ 2 echo;%%i 第二个值处理
..
由你的意图来决定代码

评分

参与人数 1PB +10 收起 理由
Batcher + 10 乐于助人

查看全部评分

 楼主| 发表于 2009-8-1 10:50:41 | 显示全部楼层

真诚感谢两位的回贴

我已知道 tokens delims 的大概用法了
又有了新贴http://bbs.bathome.net/viewthread.php?tid=5413&extra=page%3D1&frombbs=1
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 08:17 , Processed in 0.032528 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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