Board logo

标题: [文本处理] [已解决]全盘搜索包含某关键词的文件或文件夹并输出到txt [打印本页]

作者: swanseabrian    时间: 2021-10-19 10:29     标题: [已解决]全盘搜索包含某关键词的文件或文件夹并输出到txt

本帖最后由 swanseabrian 于 2021-10-20 09:20 编辑

全盘搜索包含某关键词的文件或文件夹并输出到txt
下面是我写的,要怎么改一下
  1. @echo on
  2. set wenjian="福昕PDF转WORD软件"
  3. set panfu= d e f g h i j k l m n o p q r s t u v w x y z
  4. for %%i in (%panfu%) do if exist %%i:\  pushd %%i:\&&(for /f "delims=" %%a in ('dir /b /s  %wenjian%') do (
  5.    
  6.     echo %%a
  7.   ))>123.txt
  8.   popd
复制代码
我上面这个肯定 有问题,
但还有个问题,是  
我打印出出来是 1>123.txt
这个1是哪里来的,不知道
作者: dos大帝    时间: 2021-10-19 11:38

本帖最后由 dos大帝 于 2021-10-19 11:41 编辑
  1. @echo off
  2. set wenjian="test_show.txt"
  3. set panfu=d e f g h i j k l m n o p q r s t u v w x y z
  4. for %%i in (%panfu%) do (
  5.     if exist "%%i:\" (
  6.         echo "%%i:\"
  7.         pushd "%%i:\"
  8.         for /f "delims=" %%a in ('dir /b /s %wenjian%') do (
  9.             echo %%a >> "D:\123.txt"
  10.         )
  11.         popd
  12.     )
  13. )
  14. pause
复制代码
显示1>123.txt那是打印的预编译结果, 跟实际结果无关
搜索文件有中文名注意编码格式, 否则找不到文件
作者: swanseabrian    时间: 2021-10-19 12:02

回复 2# dos大帝


    你这个报错,命令错误
作者: dos大帝    时间: 2021-10-19 12:06

回复 3# swanseabrian


    没问题啊, 什么命令错误, 你没做修改?
    如果闪退可以将脚本直接拖到cmd里运行, 有报错信息
作者: swanseabrian    时间: 2021-10-19 12:35

回复 4# dos大帝


    好的,
作者: qixiaobin0715    时间: 2021-10-19 18:05

未测试:
  1. @echo off
  2. set FFName="福昕PDF转WORD软件[^\\]*"
  3. set DriveLetters=d e f g h i j k l m n o p q r s t u v w x y z
  4. for %%i in (%DriveLetters%) do (
  5.     if exist "%%i:" (
  6.         pushd "%%i:"
  7.         dir /b /s | findstr /e %FFName%
  8.         popd
  9.     )
  10. )
  11. pause
复制代码

作者: swanseabrian    时间: 2021-10-19 20:08

回复 6# qixiaobin0715


    你这个也是可以的
作者: swanseabrian    时间: 2021-10-19 20:23

回复 6# qixiaobin0715


    [^\\]*这是代表的是通配符吗
这个你不是说在正则的时候用吗,这里你也没用正则
作者: Batcher    时间: 2021-10-19 23:55

回复 8# swanseabrian


    正则表达式和通配符不一样
作者: qixiaobin0715    时间: 2021-10-20 08:31

本帖最后由 qixiaobin0715 于 2021-10-20 15:14 编辑

回复 8# swanseabrian
非通配符。
批处理findstr中的一般表达式姑且叫做蹩脚的正则表达式,和正常的正则相比功能上少了很多。
[^\\]表示非反斜杠字符,[^\\]*表示非反斜杠字符可出现0到若干次,结合/e表示要筛选最后面的字符是“福昕PDF转WORD软件+若干非反斜杠字符”的字符串。
在这里加不加/r均可表示使用一般表达式,最好养成加上/r的习惯。
作者: swanseabrian    时间: 2021-10-20 09:19

回复 10# qixiaobin0715


    好的
作者: aloha20200628    时间: 2021-10-20 11:45

给一个简捷版,代码如下:
set keyWord="福昕PDF转WORD软件"
set drivers=d: e: f: g: h: i: j: k: l: m: n: o: p: q: r: s: t: u: v: w: x: y: z:
(for %%d in (%drivers%) do (if exist %%d dir/s/b %%d\applications\*%keyWord%*))>"d:\查找简报.txt"
作者: aloha20200628    时间: 2021-10-20 11:47

更正如下:
(for %%d in (%drivers%) do (if exist %%d dir/s/b %%d\*%keyWord%*))>"d:\查找简报.txt"
作者: qixiaobin0715    时间: 2021-10-20 14:24

12楼的解法效率更高,按照12楼思路代码修改如下:
  1. @echo off
  2. set FFName="*福昕PDF转WORD软件*"
  3. set DriveLetters=d e f g h i j k l m n o p q r s t u v w x y z
  4. for %%i in (%DriveLetters%) do (
  5.     if exist "%%i:" (
  6.         pushd "%%i:"
  7.         dir /b /s %FFName%
  8.         popd
  9.     )
  10. )
  11. pause
复制代码





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