Board logo

标题: [文本处理] 批处理怎样查找在文本中包含指定字段的的文档路径? [打印本页]

作者: FIR1987    时间: 2011-4-18 09:23     标题: 批处理怎样查找在文本中包含指定字段的的文档路径?

之前用过一个程序可以查找在文本中包含指定字段的的文档
  1. @echo off
  2. color 0a
  3. title 《sample》
  4. [color=Red](for %%i in (C D E) do findstr /sic:"echo" %%i:\*.bat)>>c:\bat.TXT[/color]
  5. pause
复制代码
但是如果我想指定路径比如,就发现没效果了呢 路径应该怎么写呢
  1. @echo off
  2. color 0a
  3. title 《sample》
  4. [color=Red](for %%i in (“C:\bat”) do findstr /sic:"echo" %%i:\*.bat)>>c:\bat.TXT[/color]
  5. pause
复制代码

作者: hanyeguxing    时间: 2011-4-18 09:28

  1. findstr /sic:"echo" "C:\bat\*.bat">>c:\bat.TXT
复制代码

作者: FIR1987    时间: 2011-4-18 23:56

findstr /sic:"echo" "C:\bat\*.bat">>c:\bat.TXT
hanyeguxing 发表于 2011-4-18 09:28

多谢版主 不过我是希望也能够遍历C:\bat的子文件夹 不知道应该如何写呢?
作者: FIR1987    时间: 2011-4-19 00:03

findstr /sic:"echo" "C:\bat\*.bat">>c:\bat.TXT
hanyeguxing 发表于 2011-4-18 09:28

说错了,这样只会显示无数个执行语句的
F:\>findstr /sic:"copy" "F:\testbat\AutoRunCubeScriptt\*.bat" 1>>c:\bat.TXT
作者: FIR1987    时间: 2011-4-19 22:54

帮忙看看~多谢
作者: CrLf    时间: 2011-4-19 23:03

说错了,这样只会显示无数个执行语句的
F:\>findstr /sic:"copy" "F:\testbat\AutoRunCubeScriptt\*.bat" 1>>c:\bat.TXT
FIR1987 发表于 2011-4-19 00:03

不懂楼主此处说的是什么意思,只想要文件名么?那把/sic改成/simc就行了
作者: FIR1987    时间: 2011-4-21 09:09

本帖最后由 FIR1987 于 2011-4-21 09:12 编辑

我是希望也能够遍历C:\bat的以及其子文件夹中所有后缀名为bat的文件,如果这些bat文件中含有echo则显示到某一个文本中。

我一楼实现的是遍历c盘下的所有后缀名为bat的文件,如果这些bat文件中含有echo则显示到某一个文本中。
不知道才c:\bat这个路径应该怎么写

多谢~
作者: CrLf    时间: 2011-4-21 13:16

“如果这些bat文件中含有echo则显示到某一个文本中。”
又没说出重点,到底是要文件名还是只要符合条件的内容
作者: FIR1987    时间: 2011-4-21 16:47

就像我一楼那样的显示~
左边文件:内容
e:\bea\weblogic81\common\eval\dbvisualizer\run.batecho off
不知道路径怎么写 谢谢
作者: CrLf    时间: 2011-4-21 18:18

可是2楼的代码就是那个意思啊,findstr中存在/s开关时,c:\bat\*.bat是包括子目录的
作者: FIR1987    时间: 2011-4-22 00:08

不好意思 是我不仔细
为了完善下功能,编辑如下
  1. @echo off
  2. :repeat
  3. set /p dir=请输入你要查找的路径:
  4. set /p keyword=请输入你要查找的关键字:
  5. echo.>>c:\bat.TXT
  6. findstr /sic:%keyword%  %dir%>>c:\bat.TXT
  7. set /p flag=是否还要继续?(输入yes将继续搜索指定文件)
  8. if "%flag%"=="yes" goto repeat else echo 结束
  9. pause
复制代码

作者: FIR1987    时间: 2011-4-22 00:11

据说 findstr /d 也很好用 有了解的说下哈 我回头也研究下
作者: FIR1987    时间: 2011-4-25 20:36

如果我想取得当前行即显示keyword又显示当前日期的日比如25的行 这样写为啥出不来呢 请指教

@echo off
:repeat
set  Var=%date:~8,2%
set /p dir=请输入你要查找的路径:例如("c:\a\*.txt")
set /p keyword=请输入你要查找的关键字:(key)
echo.>>c:\bat.TXT
findstr /sic:%keyword%&%Var%  %dir%>>c:\bat.TXT
set /p flag=是否还要继续?(输入yes将继续搜索指定文件)
if "%flag%"=="yes" goto repeat else echo 结束
pause
作者: CrLf    时间: 2011-4-25 20:47

findstr>>c:\bat.TXT /sic:"%keyword%" /c:"%Var%"  %dir%
作者: FIR1987    时间: 2011-4-25 21:18

14# zm900612
非常谢谢
不过有三个小问题
1 我希望的是有keyword并且有25(当天日期)的行 不是有keyword或者25的行
2我的是哪里有问题。。。没看出来
3findstr还可以直接>>这个用法能,能讲讲吗

谢谢
作者: CrLf    时间: 2011-4-25 21:23

findstr /sic:"%keyword%" %dir%|findstr /ic:"%Var%" >>c:\bat.TXT

系统帮助能解答的我就不废话了,|是管道,能获取命令的输出到另一个命令作为输入("|"),>>是重定向,能把命令的输出定向到文件
作者: FIR1987    时间: 2011-4-26 11:23

16# zm900612
完全没问题 多谢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2