搜索特定的txt

时间:2014-12-26 16:37:33

标签: batch-file

我正在创建一个批处理脚本,其中用户扫描文件夹并将其文件批量列入TXT,并在扫描完TXT列表后查找与列表同名的文件,预定,但是我有问题

1 - 我对如何显示单独列表中的文件没有任何想法

示例:

My list:

VideoTeste
Family
Myfavoritesong
My Song

Result in Documentos.txt:

Videoteste.avi
Family.exe
family.jpg
MY_1231dFamilyxzsaxad.jpg
MyFavoritesong.mp3
Folder_Family
My Song.mp3



Result in Downloads.txt:

Videoteste.rar
Family_235.dat
MyFavoritesong_&.mp3
My Song.mp3


Result in Temp.txt:

Videoteste.rar
Family_235.dat
MyFavoritesong_&.mp3
My Song.mp3

2 - 此列表不是固定的,也不是本地的,这将使本地和项目不会导致脚本错误,如空格或&。

注意:

1 - 列表位于几个.txt文件的临时文件夹中

2 - 如果可能,如果没有找到.txt文件中的任何内容,则表明输出文件中未找到任何内容。

1 个答案:

答案 0 :(得分:1)

这是

的批处理文件
  • 扫描批处理文件顶部列出的每个文件夹
  • 用于具有固定名称
  • 的列表文件中的文件和文件夹
  • 并将所有找到的文件和文件夹的名称写入与扫描文件夹同名的文本文件中。

如果在指定文件夹中找不到列表中的文件/文件夹,则输出信息消息。

因此批处理文件不会在文本文件中搜索列表文件中文件和文件夹的名称 但我想临时文件夹中的文本文件只是在使用批处理代码之前创建的。

@echo off
call :SearchFromList "C:\Temp\Documentos"
call :SearchFromList "C:\Temp\Downloads"
call :SearchFromList "C:\Temp\Temp"
goto :EOF

:SearchFromList
set "Folder=%~1"
set "ListFile=C:\Temp\%~nx1.txt"

echo Scan folder "%Folder%" for files in "My List.txt"
echo and write found files and folders to "%ListFile%".
echo.

if exist "%ListFile%" del /F "%ListFile%"
for /F "usebackq delims=" %%N in ("C:\Temp\My List.txt") do (
    for /F "delims=" %%F in ('dir /B "%Folder%\*%%N*" 2^>nul') do echo>>"%ListFile%" %%~nxF
)

if not exist "%ListFile%" (
    echo>"%ListFile%" No file found from list.
    echo No file found from list in folder "%Folder%".
    echo.
)
goto :EOF

请参阅Batch creation of a list of folders : can't echo accented characters,了解如何将带有本地GUI代码页的本地字符的文件和文件夹名称转换为文本文件。