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

[文本处理] [已解决]批处理找出所有文本中有个特定字符串的行?

比如:特定字符串是“名称”,在E盘下搜索所有的本文,把文本中有出现"名称"的行,全部输出到"结果.txt"
1.txt 里面有这个特定字符串 把这个特定字符串说在的行输出到 结果.txt

[ 本帖最后由 czx33859066 于 2010-5-22 20:27 编辑 ]
1

评分人数

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

1,如果要带着行所在文本的绝对路径,则可以
  1. findstr /c:"名称" E:\*.txt >C:\结果.txt
复制代码
2,如果不要,则可以:
  1. @echo off
  2. (for /F "delims=" %%a in ('findstr /c:"名称" E:\*.txt') do (
  3. setlocal enabledelayedexpansion
  4. set a=%%a
  5. set a=!a:*:=!
  6. set a=!a:*:=!
  7. echo.!a!
  8. Endlocal))>C:\结果.txt
复制代码

[ 本帖最后由 hanyeguxing 于 2010-5-22 18:08 编辑 ]
1

评分人数

寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

纠正楼上一个错误,如果是想保留感叹号,setlocal enabledelayedexpansion 的位置则放错了。不然,你试试以下代码:
  1. @echo off
  2. for %%a in ("!") do (
  3.     SetLocal EnableDelayedExpansion
  4.     set var=%%a
  5.     echo !var! (感叹号没有了)
  6.     EndLocal
  7. )
  8. pause
复制代码
正确的应该是:
  1. @echo off
  2. for %%a in ("!") do (
  3.     set var=%%a
  4.     SetLocal EnableDelayedExpansion
  5.     echo !var!
  6.     EndLocal
  7. )
  8. pause
复制代码

[ 本帖最后由 del 于 2010-5-22 18:25 编辑 ]
1

评分人数

TOP

3楼正解。参考:批处理最大限度原样输出含特殊字符的指定行内容
http://bbs.bathome.net/thread-4580-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

LZ是否可以提供已解决之P原文?

TOP

返回列表