如何编写基于列表搜索文件的批处理脚本

时间:2015-01-09 02:36:53

标签: batch-file

任何人都可以协助我编写批处理脚本,搜索文件名并将文件的位置输出到文本文件。示例我有一个名为list.txt的文件位于文件夹C:\ LocateFiles \ list.txt中。位于list.txt文件中的是大约25个文件名,我希望确定它们是否位于C:\驱动器上的任何位置。如果它找到文件list.txt中标识的任何文件名,它将输出在C:\ locatedFiles \ results.txt中找到的单个文件的所有文件的路径。

百万感谢, 约翰尼麦克

2 个答案:

答案 0 :(得分:2)

@ECHO OFF
FOR /F %%F IN (C:\LocateFiles\List.txt) DO DIR /s/p/b %%F.* >> C:\LocateFiles\finds.txt

将其保存为 LocateFiles.cmd 并将其放在您要搜索的目录中,请注意C:\非常大,需要很长时间! 就像在,永远,认真,我真的不会,你的电话......

文件 finds.txt 将包含与List.txt中列出的文件名匹配的任何文件的完整路径

另请注意,这会找到任何扩展程序的文件,但文件名本身必须与完全匹配 List.txt

答案 1 :(得分:2)

下面的解决方案只搜索当前目录中的文件,因此运行速度更快。

@echo off
dir /S /B /A-D | findstr /I /G:C:\LocateFiles\list.txt > C:\LocatedFiles\results.txt

编辑添加新方法

以下方法可能运行得更快。有必要完成时间测试。

@echo off
setlocal EnableDelayedExpansion

rem Read file names from file list and assemble a long string with this format:
rem "filename1.ext*" "filename2.ext*" ...
set "fileList="
for /F "delims=" %%a in (C:\LocateFiles\list.txt) do set fileList=!fileList! "%%a*"

rem Search the files from current directory downwards
(for /R %%a in (%fileList%) do echo %%a) > C:\LocatedFiles\results.txt