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

[文本处理] [已解决]批处理findstr命令多文本数据检索时如何不显示文件名?

[复制链接]
 楼主| 发表于 2011-7-20 13:24:33 | 显示全部楼层
本帖最后由 ftjm268 于 2011-7-20 13:26 编辑

发了图,没想到压缩到这么模糊,我还是用文字说明吧
文件名:200718_0844.txt这个文件有382 -v143788这个订单,但即便用:
findstr "382 -v143788" 200718_0844.txt > sum.txt 或者:
findstr /c:"382 -v143788" 200718_0844.txt > sum.txt都检索不到数据
发表于 2011-7-20 13:31:43 | 显示全部楼层
16# ftjm268
如果你不介意的话,你发一小段你的文件内容上来分析,当然,为防止泄密,你可以修改一下,将其他一些无用的内容替换。
这应该是最快的方法,免得你说不清楚我们也搞不懂。
 楼主| 发表于 2011-7-20 15:57:00 | 显示全部楼层
16# ftjm268  
如果你不介意的话,你发一小段你的文件内容上来分析,当然,为防止泄密,你可以修改一下,将其他一些无用的内容替换。
这应该是最快的方法,免得你说不清楚我们也搞不懂。
cjiabing 发表于 2011-7-20 13:31


SQ023F|3|U|107 -D1028343|000057|000|X5|X|||802|P02|050|PSHD-999  +|A||20110715|000
SQ023A|3|A|382 -V143788||000|||10||1184||20110715|20110715|0000000||946179|V143788|20110715||E|OT||||AF|Y|F27|20110916|005|2|X||382|030|060|030||000|000|000||000|000|000||000|000|000|000|N|0|1|2|B|V143788||20110715|000

好的,我就发两行吧,有个案例就好,我要第二行订单号是:382 -V143788的整行数据。
发表于 2011-7-20 16:05:49 | 显示全部楼层
加上 /i 参数忽略大小写:
:echo off
u:
cd MTN\OPSDATA_BKUP
set str="382 -v143788"
set file="200718*.txt"
type %file% 2>nul | findstr /i /c:%str% >sum.txt
for /f %%a in (' "type %file% 2>nul | find /i /c %str%" ') do set n=%%a
echo %n%
pause

N=0


-------------------

2>nul 是用来屏蔽错误输出。

评分

参与人数 1技术 +1 收起 理由
ftjm268 + 1 给予我很大的技术支持

查看全部评分

 楼主| 发表于 2011-7-20 16:15:01 | 显示全部楼层
加上 /i 参数忽略大小写:


-------------------

2>nul 是用来屏蔽错误输出。
tmplinshi 发表于 2011-7-20 16:05



可以了,谢谢shi兄指教
发表于 2011-7-21 17:03:38 | 显示全部楼层
  1. @echo off
  2. (For /f "tokens=2 delims=:" %%i in ('findstr "1" a*.txt ') do Echo %%i)>b.txt
  3. pause
复制代码
发表于 2011-7-22 11:10:50 | 显示全部楼层
19# tmplinshi
type %file% 2>nul | findstr /i /c:%str% >sum.txt
for /f %%a in (' "type %file% 2>nul | find /i /c %str%" ') do set n=%%a
本人新手,在学习中。有点不明白。为什么用了findstr还要用find呢?还有,findstr是不是不能用在for里?
发表于 2011-7-22 13:04:16 | 显示全部楼层
22# q115643492


追求高效率。
能放在for循环,但是通常会降低效率。
发表于 2011-7-22 13:45:42 | 显示全部楼层
本帖最后由 tmplinshi 于 2011-7-22 13:48 编辑
19# tmplinshi
type %file% 2>nul | findstr /i /c:%str% >sum.txt
for /f %%a in (' "type %file% 2>nul | find /i /c %str%" ') do set n=%%a
本人新手,在学习中。有点不明白。为什么用了findstr还要用find呢 ...
q115643492 发表于 2011-7-22 11:10

为了代码更简短、易读。
可以像 9 楼 一样只用一个 find。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 19:40 , Processed in 0.017363 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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