标题: [求助](难题)[讨论](现解决)查找多个文件.bat
[打印本页]
作者: dosz
时间: 2009-4-12 10:38
标题: [求助](难题)[讨论](现解决)查找多个文件.bat
在

深度论坛 liuss 给我回复个帖子查找多个文件,可文件多处出错,
希望在此得到高手相助。
http://os.deepin.org/read.php?tid=1052540&page=1&toread=1 Quote: |
- @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
- set dri=%dri::=%
- echo %date% %time% >list.txt
- echo ----------------------------- >>list.txt
- for %%a in (%dri%) do (
- if exist %%a:\nul (
- cd/d %%a:\
- cls&echo 正在搜索 %%a: 盘下的 !filename! ...
- dir /b/s/a- !filename! >>%~dp0\list.txt
- )
- )2>nul
- cd/d %~dp0
- for /f "delims=" %%a in (list.txt) do set/a n+=1
- set/a n=%n%-2
- echo ============================= >>list.txt
- echo 文件总数为:%n% >>list.txt
- cls
- echo 搜索完成,文件总数为:%n%
- ping 127.1 -n ^5>nul
- start list.txt
无奈何发表于: 2009-04-12 21:23 |
|
[
Last edited by dosz on 2009-4-18 at 09:19 ]
作者: netbenton
时间: 2009-4-12 11:36
dir命令支持以下操作:
dir [路径] [多个文件列表]
如:
for /f "delims=" %%a in ('dir /s/b d:\*.bat *.txt *.mp3') do echo %%a
你自己试试看。
作者: ZJHJ
时间: 2009-4-13 01:13
@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
)
)
作者: wuwei1dai
时间: 2009-4-13 01:56
给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
作者: dosz
时间: 2009-4-17 11:22
Quote: |
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:\ 改变了当前目录。
按理说没问题啊,你给我解释一下吧。
Quote: |
- @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.
- set/p sheet=请输入要写入例表的文件名:┗┛可选项(不要扩占名):
- echo %date% %time% >%temp%\%sheet%.txt
- echo ----------------------------- >>%temp%\%sheet%.txt
- for %%a in (%dri%) do (
- if exist %%a:\nul (
- cd/d %%a:\
- cls&echo 正在搜索 %%a: 盘下的 !filename! ...
- dir /b/s/a !filename! >>%temp%\%sheet%.txt
- )
- )2>nul
- cd/d %~dp0
- for /f "delims=" %%a in (%temp%\%sheet%.txt) do set/a n+=1
- set/a n=%n%-2
- echo ============================= >>%temp%\%sheet%.txt
- echo 文件总数为:%n% >>%temp%\%sheet%.txt
- cls
- echo.
- echo ====== 为你找到: "%filename%" 文件总数为:%n% ,
- echo.
- echo 并保存到“%temp%\%sheet%.txt”文件中 ======
- ping 127.1 -n ^8>nul
- start %temp%\%sheet%.txt
无奈何发表于: 2009-04-17 22:12 |
|
作者: netbenton
时间: 2009-4-17 12:22
哦,原来这样,偶会错意了。I am sorry!
作者: dosz
时间: 2009-4-17 23:46
Quote: |
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" Quote: |
- @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 drv=请输入你要搜索的分区名称(直接回车表示全盘搜索):
- 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
- echo.
- set/p filelist=请输入要写入清单的文件名:┗┛可选项(不要扩占名):
- if "%filelist%"=="" set filelist=list
- echo %date% %time% >%temp%\%filelist%.txt
- echo ----------------------------- >>%temp%\%filelist%.txt
- for %%a in (%drv%) do (
- if exist %%a:\nul (
- cd/d %%a:\
- cls&echo 正在搜索 %%a: 盘下的 !filename! ...
- dir /b/s/a !filename! >>"%temp%\%filelist%.txt"
- )
- )2>nul
- cd/d %~dp0
- for /f "delims=" %%a in (%temp%\%filelist%.txt) do set/a n+=1
- set/a n=%n%-2
- echo ============================= >>%temp%\%filelist%.txt
- echo 文件总数为:%n% >>%temp%\%filelist%.txt
- cls
- echo.
- echo ====== 为你找到: "%filename%" 文件总数为:%n% ,
- echo.
- echo 并保存到“%temp%\%filelist%.txt”文件中 ======
- ping 127.1 -n ^5>nul
- start %temp%\%filelist%.txt
- GOTO :EOF
dosz发表于: 2009-04-18 10:33 |
|
作者: wuwei1dai
时间: 2009-4-18 01:25
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"
作者: dosz
时间: 2009-4-18 09:15
re: wuwei1dai
是的,事实上,你的做法和他的做法不某而合。
liuss:如果批处理所在路径名称存在空格,应补上双引号: "%~dp0\list.txt"
wuwei1dai:给list.txt加上路径就没问题了
一般地我多在桌面上测试 bat,而桌面路径则带空格
C:\Documents and Settings\Administrator\桌面
在此谢谢各位网友!