中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助](难题)[讨论](现解决)查找多个文件.bat
作者:
标题: [求助](难题)[讨论](现解决)查找多个文件.bat 上一主题 | 下一主题
dosz
中级用户

一看二跟三动手


积分 396
发帖 188
注册 2005-10-23
来自 上海
状态 离线
『楼 主』:  [求助](难题)[讨论](现解决)查找多个文件.bat

深度论坛 liuss 给我回复个帖子查找多个文件,可文件多处出错, 希望在此得到高手相助。 os.deepin.org/read.p ...
  1. @echo off&setlocal enabledelayedexpansion
  2. title 文件查找程序
  3. color 70
  4. echo 说明:
  5. echo 查找多个文件可以使用通配符,如输入:*.mp3 可查找所有的 MP3 文件,
  6. echo 或输入:*.mp3 *.wma *.wav 可查找所有的 mp3、wma、wav 文件等。
  7. echo 在要求输入分区名称时,输入:C D(或 C: D:)表示只搜索C盘和D盘。
  8. echo.
  9. set/p filename=请输入要查找的文件名:
  10. if "%filename%"=="" exit
  11. echo.
  12. set/p dri=请输入你要搜索的分区名称(直接回车表示全盘搜索):
  13. if "%dri%"=="" set dri=C D E F G H I J K L M N O P Q R S T U V W X Y Z
  14. set dri=%dri::=%
  15. echo %date% %time% >list.txt
  16. echo ----------------------------- >>list.txt
  17. for %%a in (%dri%) do (
  18. if exist %%a:\nul (
  19. cd/d %%a:\
  20. cls&echo 正在搜索 %%a: 盘下的 !filename! ...
  21. dir /b/s/a- !filename! >>%~dp0\list.txt
  22. )
  23. )2>nul
  24. cd/d %~dp0
  25. for /f "delims=" %%a in (list.txt) do set/a n+=1
  26. set/a n=%n%-2
  27. echo ============================= >>list.txt
  28. echo 文件总数为:%n% >>list.txt
  29. cls
  30. echo 搜索完成,文件总数为:%n%
  31. ping 127.1 -n ^5>nul
  32. start list.txt
无奈何发表于: 2009-04-12 21:23
[ Last edited by dosz on 2009-4-18 at 09:19 ]




*/. . . * . .\* . [] * dosz */ . ./\~~~~~~~~~~~~'\. ^|◆ \* ,/,..,\,...........,\.◆ ^|^| ..▎# ▎田 田 ▎ ^| ▎◆ ^|^| ^&^&▎ ▎ ▎'^|'▎ o ^|^| ##■■■■■■■■■■〓
2009-4-12 10:38
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 2 楼』:  

dir命令支持以下操作: dir [路径] [多个文件列表] 如: for /f "delims=" %%a in ('dir /s/b d:\*.bat *.txt *.mp3') do echo %%a 你自己试试看。




精简 [你的+我的+他的]=>[大家的] 个人网志
2009-4-12 11:36
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
ZJHJ
高级用户





积分 609
发帖 374
注册 2006-8-2
状态 离线
『第 3 楼』:  

@echo off ::wangweiqq251485609 @echo 按清单查找程序或文件路径,请分行填入>t.txt call t.txt cd.>lj.txt for %%f in (C D E F G H I J K) do ( for /f %%i in (t.txt) do ( dir /a /b /s %%f:\%%i>>lj.txt ) )


2009-4-13 01:13
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wuwei1dai
初级用户





积分 44
发帖 22
注册 2008-12-10
来自 广安
状态 离线
『第 4 楼』:  

给list.txt加上路径就没问题了 @echo off&setlocal enabledelayedexpansion title 文件查找程序 color 70 echo 说明: echo 查找多个文件可以使用通配符,如输入:*.mp3 可查找所有的 MP3 文件, echo 或输入:*.mp3 *.wma *.wav 可查找所有的 mp3、wma、wav 文件等。 echo 在要求输入分区名称时,输入:C D(或 C: D:)表示只搜索C盘和D盘。 echo. set/p filename=请输入要查找的文件名: if "%filename%"=="" exit echo. set/p dri=请输入你要搜索的分区名称(直接回车表示全盘搜索): if "%dri%"=="" set dri=C D E F G H I J K L M N O P Q R S T U V W X Y Z echo %date% %time% >c:\list.txt echo ----------------------------- >>c:\list.txt for %%a in (%dri%) do ( if exist %%a:\nul ( cd/d %%a:\ cls&echo 正在搜索 %%a: 盘下的 !filename! ... dir /b/s/a !filename! >>c:\list.txt ) )2>nul cd/d %~dp0 for /f "delims=" %%a in (c:\list.txt) do set/a n+=1 set/a n=%n%-2 echo ============================= >>c:\list.txt echo 文件总数为:%n% >>c:\list.txt cls echo 搜索完成,文件总数为:%n% ping 127.1 -n ^5>nul start c:\list.txt


2009-4-13 01:56
查看资料  发送邮件  发短消息 网志  OICQ (459253744)  编辑帖子  回复  引用回复
dosz
中级用户

一看二跟三动手


积分 396
发帖 188
注册 2005-10-23
来自 上海
状态 离线
『第 5 楼』:  

Originally posted by wuwei1dai at 2009-4-13 01:56: 给list.txt加上路径就没问题了 @echo off&setlocal enabledelayedexpansion title 文件查找程序 color 70 echo 说明: echo 查找多个文件可以使用通配符,如 ...
给list.txt加上路径就没问题了 的确如此,谢谢广安的wuwei1dai朋友。 这个正合我意,我本来就要把它建在%temp%文件夹下。 echo. echo ====== 为你找到: "%filename%" 文件总数为:%n% , echo. echo 并保存到“%temp%\%sheet%.txt”文件中 ====== 深度论坛的liuss说:他的代码经过多次测试成功。 dir /b/s/a- !filename! >>%~dp0\list.txt 此句是把结果定向到批处理本身所在目录下的文本中,因为上两行使用了 cd/d %%a:\ 改变了当前目录。 按理说没问题啊,你给我解释一下吧。
  1. @echo off&setlocal enabledelayedexpansion
  2. title 文件查找程序
  3. color 70
  4. echo 说明:
  5. echo 查找多个文件可以使用通配符,如输入:*.mp3 可查找所有的 MP3 文件,
  6. echo 或输入:*.mp3 *.wma *.wav 可查找所有的 mp3、wma、wav 文件等。
  7. echo 在要求输入分区名称时,输入:C D(或 C: D:)表示只搜索C盘和D盘。
  8. echo.
  9. set/p filename=请输入要查找的文件名:
  10. if "%filename%"=="" exit
  11. echo.
  12. set/p dri=请输入你要搜索的分区名称(直接回车表示全盘搜索):
  13. if "%dri%"=="" set dri=C D E F G H I J K L M N O P Q R S T U V W X Y Z
  14. echo.
  15. set/p sheet=请输入要写入例表的文件名:┗┛可选项(不要扩占名):
  16. echo %date% %time% >%temp%\%sheet%.txt
  17. echo ----------------------------- >>%temp%\%sheet%.txt
  18. for %%a in (%dri%) do (
  19. if exist %%a:\nul (
  20. cd/d %%a:\
  21. cls&echo 正在搜索 %%a: 盘下的 !filename! ...
  22. dir /b/s/a !filename! >>%temp%\%sheet%.txt
  23. )
  24. )2>nul
  25. cd/d %~dp0
  26. for /f "delims=" %%a in (%temp%\%sheet%.txt) do set/a n+=1
  27. set/a n=%n%-2
  28. echo ============================= >>%temp%\%sheet%.txt
  29. echo 文件总数为:%n% >>%temp%\%sheet%.txt
  30. cls
  31. echo.
  32. echo ====== 为你找到: "%filename%" 文件总数为:%n%
  33. echo.
  34. echo 并保存到“%temp%\%sheet%.txt”文件中 ======
  35. ping 127.1 -n ^8>nul
  36. start %temp%\%sheet%.txt
无奈何发表于: 2009-04-17 22:12




*/. . . * . .\* . [] * dosz */ . ./\~~~~~~~~~~~~'\. ^|◆ \* ,/,..,\,...........,\.◆ ^|^| ..▎# ▎田 田 ▎ ^| ▎◆ ^|^| ^&^&▎ ▎ ▎'^|'▎ o ^|^| ##■■■■■■■■■■〓
2009-4-17 11:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
netbenton
银牌会员

批处理编程迷


积分 1916
发帖 752
注册 2008-12-28
来自 广西
状态 离线
『第 6 楼』:  

哦,原来这样,偶会错意了。I am sorry!




精简 [你的+我的+他的]=>[大家的] 个人网志
2009-4-17 12:22
查看资料  发送邮件  发短消息 网志  OICQ (37659560)  编辑帖子  回复  引用回复
dosz
中级用户

一看二跟三动手


积分 396
发帖 188
注册 2005-10-23
来自 上海
状态 离线
『第 7 楼』:  

Originally posted by dosz at 2009-4-17 11:22: 深度论坛的liuss说:他的代码经过多次测试成功。 dir /b/s/a- !filename! >>%~dp0\list.txt 此句是把结果定向到批处理本身所在目录下的文本中,因为上两行使用了 cd/d %%a:\ 改变了当前目录。 按理说没问题啊,你给我解释一下吧。
如果批处理所在路径名称存在空格,应补上双引号: dir /b/s/a !filename! >>"%temp%\%filelist%.txt"
  1. @echo off&setlocal enabledelayedexpansion
  2. title 文件查找程序
  3. color 70
  4. echo 说明:
  5. echo 查找多个文件可以使用通配符,如输入:*.mp3 可查找所有的 MP3 文件,
  6. echo 或输入:*.mp3 *.wma *.wav 可查找所有的 mp3、wma、wav 文件等。
  7. echo 在要求输入分区名称时,输入:C D(或 C: D:)表示只搜索C盘和D盘。
  8. echo.
  9. set/p filename=请输入要查找的文件名:
  10. if "%filename%"=="" exit
  11. echo.
  12. set/p drv=请输入你要搜索的分区名称(直接回车表示全盘搜索):
  13. if "%drv%"=="" set drv=C D E F G H I J K L M N O P Q R S T U V W X Y Z
  14. echo.
  15. set/p filelist=请输入要写入清单的文件名:┗┛可选项(不要扩占名):
  16. if "%filelist%"=="" set filelist=list
  17. echo %date% %time% >%temp%\%filelist%.txt
  18. echo ----------------------------- >>%temp%\%filelist%.txt
  19. for %%a in (%drv%) do (
  20. if exist %%a:\nul (
  21. cd/d %%a:\
  22. cls&echo 正在搜索 %%a: 盘下的 !filename! ...
  23. dir /b/s/a !filename! >>"%temp%\%filelist%.txt"
  24. )
  25. )2>nul
  26. cd/d %~dp0
  27. for /f "delims=" %%a in (%temp%\%filelist%.txt) do set/a n+=1
  28. set/a n=%n%-2
  29. echo ============================= >>%temp%\%filelist%.txt
  30. echo 文件总数为:%n% >>%temp%\%filelist%.txt
  31. cls
  32. echo.
  33. echo ====== 为你找到: "%filename%" 文件总数为:%n%
  34. echo.
  35. echo 并保存到“%temp%\%filelist%.txt”文件中 ======
  36. ping 127.1 -n ^5>nul
  37. start %temp%\%filelist%.txt
  38. GOTO :EOF
dosz发表于: 2009-04-18 10:33




*/. . . * . .\* . [] * dosz */ . ./\~~~~~~~~~~~~'\. ^|◆ \* ,/,..,\,...........,\.◆ ^|^| ..▎# ▎田 田 ▎ ^| ▎◆ ^|^| ^&^&▎ ▎ ▎'^|'▎ o ^|^| ##■■■■■■■■■■〓
2009-4-17 23:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wuwei1dai
初级用户





积分 44
发帖 22
注册 2008-12-10
来自 广安
状态 离线
『第 8 楼』:  

Originally posted by dosz at 2009-4-17 11:22: 深度论坛的liuss说:他的代码经过多次测试成功。 还是有缺陷 就是你说的路径中有空格就不行了 把dir /b/s/a- !filename! >>%~dp0\list.txt该成这样就可以了 dir /b/s/a- !filename! >>"%~dp0\list.txt"


2009-4-18 01:25
查看资料  发送邮件  发短消息 网志  OICQ (459253744)  编辑帖子  回复  引用回复
dosz
中级用户

一看二跟三动手


积分 396
发帖 188
注册 2005-10-23
来自 上海
状态 离线
『第 9 楼』:  

re: wuwei1dai 是的,事实上,你的做法和他的做法不某而合。 liuss:如果批处理所在路径名称存在空格,应补上双引号: "%~dp0\list.txt" wuwei1dai:给list.txt加上路径就没问题了 一般地我多在桌面上测试 bat,而桌面路径则带空格 C:\Documents and Settings\Administrator\桌面 在此谢谢各位网友!




*/. . . * . .\* . [] * dosz */ . ./\~~~~~~~~~~~~'\. ^|◆ \* ,/,..,\,...........,\.◆ ^|^| ..▎# ▎田 田 ▎ ^| ▎◆ ^|^| ^&^&▎ ▎ ▎'^|'▎ o ^|^| ##■■■■■■■■■■〓
2009-4-18 09:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: