CMD-检查正则表达式的文件夹路径

CMD-检查正则表达式的文件夹路径,cmd,Cmd,我正在搜索具有特定模式的所有文件夹路径 Ex. D:\Testfolder>tree Folder PATH listing for volume Working D:. ├───fifth │ ├───first │ ├───second │ └───third │ └───_dn │ ├───first │ └───second ├───first │ ├───first │ └───second │

我正在搜索具有特定模式的所有文件夹路径

Ex. 
D:\Testfolder>tree
Folder PATH listing for volume Working
D:.

├───fifth
│   ├───first
│   ├───second
│   └───third
│       └───_dn
│           ├───first
│           └───second
├───first
│   ├───first
│   └───second
│       └───_dn
│           ├───first
│           └───second
├───fourth
│   └───first
│       └───_dn
│           ├───first
│           └───second
├───second
│   ├───first
│   ├───second
│   └───third
│       └───_dn
│           └───first
└───third
    ├───first
    └───second
        └───_dn
            ├───first
            └───second
如果路径中有单词“\u dn”,则需要将其保存在文件中

预期产出:

D:\Testfolder\fifth\third\_dn
D:\Testfolder\fifth\third\_dn\first
D:\Testfolder\fifth\third\_dn\second
D:\Testfolder\first\second\_dn
D:\Testfolder\first\second\_dn\first
D:\Testfolder\first\second\_dn\second
D:\Testfolder\fourth\first\_dn
D:\Testfolder\fourth\first\_dn\first
D:\Testfolder\fourth\first\_dn\second
D:\Testfolder\second\third\_dn
D:\Testfolder\second\third\_dn\first
D:\Testfolder\third\second\_dn
D:\Testfolder\third\second\_dn\first
D:\Testfolder\third\second\_dn\second
更新1

有人发布了一个几乎正确的答案,然后删除了它。我查不到他的名字来指代他

代码是

(For /R "D:\Testfolder" /D %A In (*_dn*) Do @Echo %A)>"savefile.txt"
返回值为

D:\Testfolder\fifth\third\_dn
D:\Testfolder\first\second\_dn
D:\Testfolder\fourth\first\_dn
D:\Testfolder\second\third\_dn
D:\Testfolder\third\second\_dn
但是,此返回值缺少在_dn\之后有内容的所有路径

Ex.
D:\Testfolder\fifth\third\_dn\first
D:\Testfolder\fifth\third\_dn\second
D:\Testfolder\first\second\_dn\first
D:\Testfolder\first\second\_dn\second
D:\Testfolder\fourth\first\_dn\first
D:\Testfolder\fourth\first\_dn\second
D:\Testfolder\second\third\_dn\first
D:\Testfolder\third\second\_dn\first
D:\Testfolder\third\second\_dn\second

您可以尝试将
Dir
Find
一起使用,如下所示:

(Dir/B/S/AD“D:\Testfolder”| Find/I“\\u dn\”>“savefile.txt”
试着这样做:

for /f "delims=" %a in ('Dir /ad /s /b D:\Testfolder\ ^| find /I "_dn"') do @echo %a

我看你已经有答案了。如果您想进入PowerShell,可以这样做。总有一天,这可能会被认为更易于维护

Get-ChildItem -Directory -Recurse -Filter '_dn' -ErrorAction SilentlyContinue |
    ForEach-Object { $_.FullName } >savefile.txt
gci -di -rec -filt '_dn' -ea si | % { $_.FullName } >savefile.txt
或者,使用别名和最小参数,它可能是神秘的和无法维护的

Get-ChildItem -Directory -Recurse -Filter '_dn' -ErrorAction SilentlyContinue |
    ForEach-Object { $_.FullName } >savefile.txt
gci -di -rec -filt '_dn' -ea si | % { $_.FullName } >savefile.txt

您是否在脚本中编写了第一行代码
@echo off
?@muneeb_ahmed我实际上直接在CMDTry中编写了代码,使用命令在目录树中查找和显示文件。“信息:找不到给定模式的文件。”我想这段代码会搜索文件。但我正在寻找目录路径。@blueray啊,好的,所以
\u dn
是一个文件夹!这就是为什么不匹配!编辑一下“do@echo%A”而不是“do echo%A”@blueray,我已经编辑了我的答案,很抱歉示例代码太差了!