如何使用批处理搜索并查找具有特定名称的所有文件?

如何使用批处理搜索并查找具有特定名称的所有文件?

我正在运行以下命令,

@echo off
cls
for /r D:\ %%a in (*) do if "%%~nxa"=="new.txt" set p=%%~dpnxa
if defined p (
echo File found its path - %p%
pause
) else (
echo File not found !
pause
)

new.txt它将在整个驱动器文件夹和子文件夹中搜索名为的文件D:作为最终结果,它将显示该文件的完整路径new.txt作为如下所示的输出,(假设new.txt文件在D:\folder\

File found and its path - D:\folder\new.txt
Press any key to continue . . . 

new.txt但问题是,如果驱动器中D:不同文件夹或子文件夹中有多个同名文件,则它只显示一个路径输出。

我的需求是,想要显示new.txt驱动器上所有具有相同名称的文件路径D:,如下面的输出,

预期输出需要这样,

Files found : 4
Files Paths : 
1 - D:\folder\new.txt
2 - D:\new folder\new.txt
3 - D:\files\new.txt
4 - D:\folder\new\new.txt

请帮忙..提前谢谢。

答案1

new.txt我想显示驱动器上所有同名文件路径D:

预期输出:

Files found : 4
Files Paths : 
1 - D:\folder\new.txt
2 - D:\new folder\new.txt
3 - D:\files\new.txt
4 - D:\folder\new\new.txt

使用以下批处理文件:

@echo off

setlocal

rem change to the correct directory
cd /d d:\

rem count the files
dir /b new.txt /s 2> nul | find "" /v /c > %temp%\count
set /p _count=<%temp%\count

rem cleanup
del %temp%\count

rem output the number of files
echo Files found : %_count%

rem list the files
echo Files Paths :
dir /b new.txt /s

endlocal

  • Windows CMD 命令行的 AZ 索引
  • Windows CMD 命令的分类列表
  • 德尔- 删除一个或多个文件。
  • 目录- 显示文件和子文件夹的列表。
  • 端局部- 结束批处理文件中环境更改的本地化。将变量从一个批处理文件传递到另一个批处理文件。
  • 寻找- 在文件中搜索文本字符串并显示找到该字符串的所有行。
  • - 显示、设置或删除 CMD 环境变量。使用 SET 所做的更改将仅在当前 CMD 会话期间保留。
  • 设置本地- 设置选项来控制批处理文件中环境变量的可见性。

相关内容