![如何使用批处理搜索并查找具有特定名称的所有文件?](https://linux22.com/image/1547354/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E6%89%B9%E5%A4%84%E7%90%86%E6%90%9C%E7%B4%A2%E5%B9%B6%E6%9F%A5%E6%89%BE%E5%85%B7%E6%9C%89%E7%89%B9%E5%AE%9A%E5%90%8D%E7%A7%B0%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我正在运行以下命令,
@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 会话期间保留。
- 设置本地- 设置选项来控制批处理文件中环境变量的可见性。