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

[文本处理] [已解决]批处理怎样输出搜索到的第一行内容?

本帖最后由 saogz 于 2011-7-22 09:28 编辑

我在a文件中搜索123
搜索到就将包含123的整行内容输出到b文件,
但是他会把所有包含123的行全输出到b文件
我现在只想把a文件中包含123内容的第一行整行输出到b文件中,
请问这样的脚本应该怎么写!!谢谢啊!!


真不好意思啊,到现在才来补充问题,以下是我使用的脚本命令,另外附件好像上传不了,我就直接贴一下了,还请各位多多帮忙,谢谢啊!!
不知道这样表达是不是会有些乱!但我这附件上传不了,唉,真是麻烦各位了!!
脚本命令:
  1. @echo off
  2.    f:
  3.    for /f "tokens=1,2 delims==" %%i in (users.txt) do (
  4.    findstr /I %%j ssreport.txt >>beiliu.txt
  5.    )
  6. pause
复制代码
users.txt 的内容我就不贴了,就是一些用户 如
User0_Name=chenp  
User1_Name=bucg


ssreport.txt 内容过多,我只贴前面1/1000000的部分吧
$/

联通运维管理/10山东/ Wanghe     11-07-20  17:28    Added 山东联通_安全管理日志_2011.0720
02安全管控日志/山东                                .xlsx                                
联通_安全管理日志_2                                                                     
011.0720.xlsx                                                                           
联通运维管理/10山东/ Wanghe     11-07-19  17:24    Added 山东联通_安全管理日志_2011.0719
02安全管控日志/山东                                .xlsx                                
联通_安全管理日志_2                                                                     
011.0719.xlsx                                                                           
联通运维管理/14运维?Guojj      11-07-18  22:32    Added 北一区各省运行分析报告_需求_内?
芾?06需求管理/03区                                晒?xlsx                             
域需求/2011年/07月?                                                                    
?周/北一区各省运行                                                                     
分析报告_需求_内蒙?                                                                    
?xlsx                                                                                 
联通运维管理/14运维?Guojj      11-07-18  22:32    Added 北一区各省运行分析报告_维护_内?
芾?06需求管理/03区                                晒?xlsx                             
域需求/2011年/07月?                                                                    
?周/北一区各省运行                                                                     
分析报告_维护_内蒙?                                                                    
?xlsx                                                                                 
联通运维管理/14运维?Zhangsj3   11-07-18  16:22    Added 北一区各省运行分析报告_维护_山?
芾?06需求管理/03区                                ?xlsx                              
域需求/2011年/07月?                                                                    
?周/北一区各省运行                                                                     
分析报告_维护_山西.                                                                     
xlsx                                                                                    
联通运维管理/14运维?Zhangsj3   11-07-18  16:21    Added 北一区各省运行分析报告_需求_山?
芾?06需求管理/03区                                ?.xlsx                              
域需求/2011年/07月?                                                                    
?周/北一区各省运行                                                                     
分析报告_需求_山西                                                                     
     

输出结果:  beiliu.txt
这样一脚本会把所有包含我想找的用户的信息全输出
联通运维管理/06江苏/ Chenp      10-05-27  17:32    Checked in $/联通运维管理/06江苏/02安
联通运维管理/06江苏/ Chenp      10-05-27  17:30    Checked in $/联通运维管理/06江苏/03日
联通运维管理/06江苏/ Chenp      10-05-26  17:20    Checked in $/联通运维管理/06江苏/03日
联通运维管理/06江苏/ Chenp      10-05-26  17:19    Checked in $/联通运维管理/06江苏/02安
联通运维管理/06江苏/ Chenp      10-05-25  22:48    Checked in $/联通运维管理/06江苏/03日
联通运维管理/06江苏/ Chenp      10-05-24  18:44    Checked in $/联通运维管理/06江苏/03日
联通运维管理/06江苏/ Chenp      10-05-24  18:40    Checked in $/联通运维管理/06江苏/02安
联通运维管理/06江苏/ Chenp      10-05-24  10:48    Checked in $/联通运维管理/06江苏/03日
联通运维管理/06江苏/ Chenp      10-05-24  10:44    Checked in $/联通运维管理/06江苏/02安
联通运维管理/02贵州/ Guob       11-02-14  17:54    Added 贵州联通_安全管理日志201102.xls
联通运维管理/02贵州/ Guob       11-02-14  17:51    Checked in $/联通运维管理/02贵州/02安
联通运维管理/02贵州/ Guob       11-01-24  17:27    Checked in $/联通运维管理/02贵州/02安
联通运维管理/02贵州/ Guob       11-01-10  16:55    Added 贵州联通_安全管理日志201101.xls
联通运维管理/02贵州/ Guob       11-01-10  16:52    Checked in $/联通运维管理/02贵州/02安
联通运维管理/02贵州/ Guob       10-12-29  17:38    Checked in $/联通运维管理/02贵州/02安
联通运维管理/02贵州/ Guob       10-12-20  15:53    Checked in $/联通运维管理/02贵州/02安 。。。。。。。。。。


而我现在只想他输出搜索出的第一行  像这样的
联通运维管理/06江苏/ Chenp      10-05-27  17:32    Checked in $/联通运维管理/06江苏/02安  
联通运维管理/02贵州/ Guob       11-02-14  17:54    Added 贵州联通_安全管理日志201102.xls
1

评分人数

    • CrLf: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 tmplinshi 于 2011-7-20 17:16 编辑
  1. @echo off
  2. findstr /i /c:"123" "a.txt" >"b.txt"
  3. set /p var=<"b.txt"
  4. >"b.txt" echo,%var%
复制代码
  1. @echo off
  2. for /f "delims=" %%a in (' findstr /i /c:"123" "a.txt" ') do (
  3.     >"b.txt" echo,%%a
  4.     goto next
  5. )
  6. :next
复制代码

TOP

好像不行嘛

TOP

贴一下你使用的代码,和测试文本(最好以附件形式上传。可能你的文件是 utf-8 编码。)。

TOP

3# saogz


今天怎么都是些“好像不行”,到底哪里不行!什么“好像不行”,看着就纠结....

TOP

  1. >>b.txt findstr "123" a.txt
  2. set /p str=<b.txt
  3. >b.txt echo %str%
复制代码
了事了、、、

TOP

6# canyuexiaolang


set /p str=<b.txt 时,碰到超过 1024 字节的行将赋值失败,所以如果不清楚背景环境的话用 for 获取更通用些

TOP

  1. @echo off
  2. for /f "tokens=1,2 delims==" %%i in (users.txt) do (
  3.     findstr /I /c:"%%j" ssreport.txt >.tmp && (
  4.         set /p var=<.tmp
  5.         setlocal enabledelayedexpansion
  6.         >>beiliu.txt echo,!var!
  7.         endlocal
  8.     )
  9. )
  10. del .tmp
  11. pause
复制代码
1

评分人数

    • saogz: 就是我想要的结果,太感谢了!!技术 + 1

TOP

可以提速下,最好不要让 findstr 进入循环:
  1. @echo off
  2. (for /f "tokens=1* delims=:" %%a in ('findstr 123 a\*.*') do (
  3.    for %%c in ("!tmp!") do (
  4.       endlocal
  5.       if %%c neq %%a echo %%b
  6.       set tmp=%%a
  7.       setlocal enabledelayedexpansion
  8.    )
  9. ))>b.txt
复制代码

TOP

返回列表