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

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

本帖最后由 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

请各位帮帮忙
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

(nnf= 0.12 ;) 这行格式都相同吗 如是就简单了

for /f "tokens=2" %%i in ('type 123.txt^|findstr /i "nnf"') do echo %%i>>112.txt

TOP

回复 2楼 的帖子

恩,就是这样
不知道 "tokens=2" 是什么意思
如果我想将寻找到的第1个值输入到1.txt ,第2个值输入到a.txt
,第3个值输入到q.txt
又该怎样改呢
谢谢回复

TOP

回复 3楼 的帖子

你要输入到的目标文本名字没有规律的么,东一个西一个的话就只等逐条重定向。没多大意义。
Still with wax

TOP

完整应该如下:
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 第二个值处理
..
由你的意图来决定代码
1

评分人数

TOP

真诚感谢两位的回贴

我已知道 tokens delims 的大概用法了
又有了新贴http://bbs.bathome.net/viewthread.php?tid=5413&extra=page%3D1&frombbs=1

TOP

返回列表