首页 文章

批处理文件给出File Not Found错误

提问于
浏览
0

正在处理系统文件搜索脚本以检索目录中所有文档的名称,以及包含确定的搜索字符串的所有子目录 . 基本上,它会记录搜索结果 . 让它也搜索文件名会很好,但这还不重要 .

码:

@echo off
echo - Will search all files in current directory, and subdirectories.
echo - Will ignore case sensitivity.
echo - Will only search for term within readable documents.
set /p searchfilter=Search Filter: 
set results=%CD%\results.txt
echo Searching...
echo Results: > "%results%"
for /f "usebackq tokens=*" %%i in (`dir /s/b/A:-D/o:e`) do (
    find /i "%searchfilter%" "%%~nxi" >nul && echo %%~nxi >> "%results%"
)
echo Search complete.
pause

运行:系统向用户请求字符串 . 然后,系统保存结果文件的句柄(认为可以解决问题,但没有) . 系统然后从目录和子目录中过滤所有文件(不包括文件夹),打印文件的裸名称(带扩展名),在此处继续扫描每个文件以查找搜索字符串,并将所有正搜索结果保存到文本文件 .

它似乎在许多文件上,我收到“文件未找到 - ”错误,并需要帮助识别它 . 我的猜测是,它与尝试查找没有目录句柄的子目录文件有关 .

2 回答

  • 1
    find /i "%searchfilter%" "%%i" >nul && echo %%~nxi >> "%results%"
    

    应该解决你的问题,因为你已经标记了自己 . 如果要搜索的子文件中存在名为 fred.txt 的文件,但扫描子树的根目录中的mot,则会出现 File not found 错误 .

    您可以选择是回显 results 的名称和扩展名,还是回显完整的文件名,当然 . 就个人而言,我会使用`%% i并获得整个事情 .

    我也会改变

    for /f "usebackq tokens=*" %%i in (`dir /s/b/A:-D/o:e`) do (
    

    for /f "delims=" %%i in ('dir /s/b/A:-D/o:e') do (
    

    但在这种情况下,这只是风格问题 .

  • 0

    这应该为您提供一个工具来搜索当前文件夹树中的文件名,并将结果记录到文件中 - 格式为 c:\path\file.ext .

    searchstring 替换为您的搜索字词,如果要搜索所有文件,请删除 *.doc ,或者如果要过滤多种文件类型,请将其替换为 *.doc *.txt *.ini *.src .

    @echo off
    dir /b /s /a-d *.doc |findstr /r /i ".*\\.*searchstring.*" >results.txt
    

相关问题