![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-04 13:10 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [求助]如何从txt文件中提取含有指定字符串的整行? |
| 可打印版本 1,213 / 11 |
| 第1楼 elsiezhou | 发表于 2007-05-10 18:36 |
| 初级用户 发帖 13 积分 32 | |
|
[求助]如何从txt文件中提取含有指定字符串的整行? 我有log1.txt文件格式如下:
...... Fichier de controle : Z:\Controle\POTANN.ctl Fichier de donnee : Z:\Data\POTANN.dat ...... Talbe POTANN : Chargement réussi de 206108 Lignes. ...... Nombre total d'enregistrements logiques ignores : 0 Nombre total d'enregistrements logiques lus : 206108 Nombre total d'enregistrements logiques rejetes : 0 ...... Le debut de l'exécution effectue sur Jeu. Avr. 26 11:38:25 2007 La fin de l'exécution effectuée sur Jeu. Avr. 26 11:38:34 2007 ...... PS:......指代若干行其他信息。 我需要编批处理执行后输出一个txt文件格式如下: Fichier de controle : Z:\Controle\POTANN.ctl Fichier de donnee : Z:\Data\POTANN.dat Talbe POTANN : Chargement reussi de 206108 Lignes. Nombre total d'enregistrements logiques ignores : 0 Nombre total d'enregistrements logiques lus : 206108 Nombre total d'enregistrements logiques rejetes : 0 Le debut de l'exécution effectue sur Jeu. Avr. 26 11:38:25 2007 La fin de l'exécution effectuée sur Jeu. Avr. 26 11:38:34 2007 由于txt很大,我需要的这些行位置不固定,我想通过查找字符串 Fichier de controle Fichier de donnee Talbe Chargement reussi Nombre total d'enregistrements logiques ignores Nombre total d'enregistrements logiques lus Nombre total d'enregistrements logiques rejetes Le debut de l'execution La fin de l'execution 输出含有以上字符串的行。 我已经看过了批处理室经典帖子分类索引中的贴子,试过几个,没成。在此请教帮忙。先谢谢了! |
|
| 第2楼 flyinspace | 发表于 2007-05-10 19:07 |
| 银牌会员 发帖 517 积分 1,206 | |
|
举个例子,没有测试:) for /f "tokens=* " %%i in (logo1.txt) do (
echo "%%i" | findstr /i "Fichier de controle" echo "%%i" | findstr /i "Fichier de donnee" ……(这里省略你需要读出的行) ) 这样就可以了啊? |
|
| 第3楼 elsiezhou | 发表于 2007-05-10 19:56 |
| 初级用户 发帖 13 积分 32 | |
|
for /f "tokens=* " %%i in (f:\logo1.txt) do (
echo "%%i" | findstr /i "Fichier de controle" >>f:\rlt.txt ) 试过了,不行。输出的txt文件是空的。我确定logo1中有这么一行。 |
|
| 第4楼 lililulula | 发表于 2007-05-11 09:31 |
| 中级用户 发帖 138 积分 302 | |
|
不知道楼主是不是要这样的效果 |
|
| 第5楼 elsiezhou | 发表于 2007-05-11 15:33 |
| 初级用户 发帖 13 积分 32 | |
|
我思考了一下,是需要加/c:,但改过之后,还是没有任何纪录。
|
|
| 第6楼 ttyp | 发表于 2007-05-11 15:57 |
| 初级用户 发帖 84 积分 180 | |
|
@echo off
for /f "tokens=* " %%i in (logo1.txt) do ( echo "%%i"|find "Fichier de controle">>r.txt ) |
|
| 第7楼 ttyp | 发表于 2007-05-11 16:01 |
| 初级用户 发帖 84 积分 180 | |
|
或者
@echo off for /f "tokens=* " %%i in (logo1.txt) do ( echo "%%i"|findstr /C:"Fichier de controle">>r.txt ) |
|
| 第8楼 lililulula | 发表于 2007-05-11 16:05 |
| 中级用户 发帖 138 积分 302 | |
|
楼主需要处理的文本是不是有特别格式? 代码应该是没问题的
|
|
| 第9楼 elsiezhou | 发表于 2007-05-11 17:04 |
| 初级用户 发帖 13 积分 32 | |
|
处理的文本文件和输出的文件都是txt文件。
问个很低级的问题: 为何要加@echo off for /f "tokens=* " %%i in (logo1.txt)等命令? 我只要打findstr /C:"Fichier de controle" logo1.txt>>r.txt findstr /C:"Fichier de donnee" logo1.txt>>r.txt .......所有我要找得字符串 不就行了? 当我直接用findstr /C:"Fichier de controle" logo1.txt>>r.txt findstr /C:"Fichier de donnee" logo1.txt>>r.txt...... 能出结果,但一加for就不行。 用for /f "tokens=* ".........是不是方便我处理一系列同类型的文件? 如@echo off for /f "tokens=* " %%i in (logo1.txt logo2.txt logo3.txt) do ( echo "%%i"|findstr /C:"Fichier de controle">>r.txt echo "%%i"|findstr /C:"Fichier de donnees">>r.txt echo "%%i"|findstr /C:"Talbe">>r.txt echo "%%i"|findstr /C:"Chargement reussi">>r.txt echo "%%i"|findstr /C:"Nombre total d'enregistrements logiques ignores">>r.txt echo "%%i"|findstr /C:"Nombre total d'enregistrements logiques lus">>r.txt echo "%%i"|findstr /C:"Nombre total d'enregistrements logiques rejetes">>r.txt echo "%%i"|findstr /C:"Le debut de l'execution">>r.txt echo "%%i"|findstr /C:"La fin de l'execution">>r.txt ) 继续请教。谢谢! |
|
| 第10楼 lxmxn | 发表于 2007-05-11 17:18 |
| 版主 发帖 4,938 积分 11,386 | |
|
将以下内容保存为View.txt:
Fichier de controle 然后在命令行执行: |
|
| 第11楼 zhoushijay | 发表于 2007-05-11 17:44 |
| 高级用户 发帖 375 积分 845 | |
|
findstr /c:"Fichier de controle",log.txt
pause 真奇怪,上面个命令在CMD中输入可以运行,放在BAT中就没反映,不知道怎么回事 |
|
| 第12楼 lxmxn | 发表于 2007-05-11 17:57 |
| 版主 发帖 4,938 积分 11,386 | |
Originally posted by zhoushijay at 2007-5-11 17:44: findstr /c:"Fichier de controle",log.txt 注意空色的",",去掉之后我这里是可以的。 |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |