标题: [文本处理] [已解决]批处理怎样输出搜索到的第一行内容? [打印本页]
作者: saogz 时间: 2011-7-20 16:28 标题: [已解决]批处理怎样输出搜索到的第一行内容?
本帖最后由 saogz 于 2011-7-22 09:28 编辑
我在a文件中搜索123
搜索到就将包含123的整行内容输出到b文件,
但是他会把所有包含123的行全输出到b文件
我现在只想把a文件中包含123内容的第一行整行输出到b文件中,
请问这样的脚本应该怎么写!!谢谢啊!!
真不好意思啊,到现在才来补充问题,以下是我使用的脚本命令,另外附件好像上传不了,我就直接贴一下了,还请各位多多帮忙,谢谢啊!!
不知道这样表达是不是会有些乱!但我这附件上传不了,唉,真是麻烦各位了!!
脚本命令:- @echo off
- f:
- for /f "tokens=1,2 delims==" %%i in (users.txt) do (
- findstr /I %%j ssreport.txt >>beiliu.txt
- )
- 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
作者: tmplinshi 时间: 2011-7-20 16:38
本帖最后由 tmplinshi 于 2011-7-20 17:16 编辑
- @echo off
- findstr /i /c:"123" "a.txt" >"b.txt"
- set /p var=<"b.txt"
- >"b.txt" echo,%var%
复制代码
- @echo off
- for /f "delims=" %%a in (' findstr /i /c:"123" "a.txt" ') do (
- >"b.txt" echo,%%a
- goto next
- )
-
- :next
复制代码
作者: saogz 时间: 2011-7-20 16:59
好像不行嘛
作者: tmplinshi 时间: 2011-7-20 17:19
贴一下你使用的代码,和测试文本(最好以附件形式上传。可能你的文件是 utf-8 编码。)。
作者: lxzzr 时间: 2011-7-20 18:19
3# saogz
今天怎么都是些“好像不行”,到底哪里不行!什么“好像不行”,看着就纠结....
作者: canyuexiaolang 时间: 2011-7-20 19:44
- >>b.txt findstr "123" a.txt
- set /p str=<b.txt
- >b.txt echo %str%
复制代码
了事了、、、
作者: CrLf 时间: 2011-7-20 20:04
6# canyuexiaolang
set /p str=<b.txt 时,碰到超过 1024 字节的行将赋值失败,所以如果不清楚背景环境的话用 for 获取更通用些
作者: tmplinshi 时间: 2011-7-21 10:11
- @echo off
- for /f "tokens=1,2 delims==" %%i in (users.txt) do (
- findstr /I /c:"%%j" ssreport.txt >.tmp && (
- set /p var=<.tmp
- setlocal enabledelayedexpansion
- >>beiliu.txt echo,!var!
- endlocal
- )
- )
- del .tmp
- pause
复制代码
作者: CrLf 时间: 2011-7-21 12:44
可以提速下,最好不要让 findstr 进入循环:- @echo off
- (for /f "tokens=1* delims=:" %%a in ('findstr 123 a\*.*') do (
- for %%c in ("!tmp!") do (
- endlocal
- if %%c neq %%a echo %%b
- set tmp=%%a
- setlocal enabledelayedexpansion
- )
- ))>b.txt
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |