首页 > 解决方案 > 如何获取不包含特定类型文件的文件夹/子文件夹列表?

问题描述

例如,我想打印一个包含文件的.html文件夹列表。如果我错了,请纠正我,但这对我有用:

dir /S *.html > C:\Users\PC\Desktop\with-html.txt

现在我想找到不包含 .html 文件的文件夹。

我该怎么做?

编辑:

文件夹的结构方式是只有子文件夹(最后一个子文件夹)有任何类型的文件。我想获得这些子文件夹的目录列表。所以上面的命令行给了我:

C:\...\ml\regression\lasso-regression
C:\...\ml\regression\linear-regression

没有输出只是C:\...\mlor C:\...\ml\regression

文件夹结构如下所示:

文件夹中有大约10个文件夹ml,没有文件。在第二文件夹级别还有大约 10 个文件夹,其中C:\...\ml\regression\linear-regression包含 HTML 文件,C:\...\ml\regression\lasso-regression而不包含具有文件扩展名的文件.html。只有文件夹树最后一级的文件夹才有文件。

我将不胜感激仅获得文件夹树中最后一个文件夹的列表,其中不包含具有文件扩展名的文件.html

我基本上将上面的命令行输出到一个.csv文件中,用 MS Excel 过滤它,现在有一个包含.html文件的文件夹列表。我基本上在使用 R-markdown 文件,这将是一个状态报告,带有 .html 文件的文件夹列表是我已经完成的。所以现在只需要对面的文件夹列表。

标签: windowspowershell

解决方案


使用 PowerShell 并不困难。

Get-ChildItem -Recurse -Directory |
    ForEach-Object {
        if ((Get-ChildItem -File -Path $_.FullName -Filter '*.html').Length -eq 0) { $_.FullName }
    }

如果您必须在 .bat 文件脚本中运行它,可能会使用以下内容。

@powershell.exe -NoLogo -NoProfile -Command ^
    "Get-ChildItem -Recurse -Directory |" ^
        "ForEach-Object {" ^
            "if ((Get-ChildItem -File -Path $_.FullName -Filter '*.html').Length -eq 0) { $_.FullName }" ^
        "}"

推荐阅读