windows – 如何递归搜索文件,但只对使用批处理文件找到文件的实例进行操作?

我的脚本的目标是在给定起始路径的情况下以递归方式搜索单个文件名(其中存在该名称的文件存在于不同文件夹中)并输出找到的每个文件的路径(不包括名称和扩展名).

出于某种原因,我整个上午都被困在这上面.我已经制作了以下代码.

@echo off

for /r D:\Workspaces\fwarrener-lglesias\Example\Example\Clients %%x in (EnterpriseSettings.config) do (
    echo %%~nxx
    echo %%~dpx
)

我得到了其他人的答案和文档的印象,如果找到括号内的文件,这只会执行’do’子句中的命令.但是,当执行和管道输入文件时,我有一个非常多的不必要的行,因为即使没有找到该文件,它也会输出它所在的目录.我对此感到困惑,因为我认为指定一个集合的重点是do中的命令只会在找到文件名的实例中执行.

D:\Workspaces\fwarrener-lglesias\Example\Example\Clients\Example\
D:\Workspaces\fwarrener-lglesias\Example\Example\Clients\Example\Example\
D:\Workspaces\fwarrener-lglesias\Example\Example\Clients\Example\Example\Config\
D:\Workspaces\fwarrener-lglesias\Example\Example\Clients\Example\Example\Config\Stage\

任何人都可以对我如何错误解释for-loop或语法的用法感到高兴吗?

最佳答案 用DIR命令对我来说这似乎更明显.在DIR /?的输出中看到/ A:-D-S-L的含义?命令.

FOR /F "tokens=*" %%x IN ('DIR /S /B /A:-D-S-L "D:\Workspaces\fwarrener-lglesias\Example\Example\Clients\EnterpriseSettings.config"') DO (
    echo "%%~nxx"
    echo "%%~dpx"
)
点赞