【问题标题】:powershell count number of defined files in defined subfolderpowershell count 已定义子文件夹中已定义文件的数量
【发布时间】:2020-09-03 15:47:51
【问题描述】:

我有 N 个不同的目录(标题是随机的,字符串中没有测试模式)

C:\Folder\test1\file.txt
C:\Folder\test2\file.txt
...
C:\Folder\testN\file.txt

我想使用 powershell 计算所有 test1..testN 子目录中文件夹目录中的 file.txt 文件数,例如 C:\Folder\*\file.txt

我从下面的代码开始,但它计算了所有文件

Write-Host ( Get-ChildItem C:\Folder | Measure-Object ).Count;

你能帮忙吗?

更新:我不需要 test1...N 子文件夹中的 file.txt 文件,仅在 test1...N 文件夹中例如 - C:\Folder\*\file.txt,但不是 C:\Folder\*\abc\file.txt

【问题讨论】:

  • 更新问题

标签: powershell powershell-2.0 powershell-3.0


【解决方案1】:

如果我正确理解了这个问题,您想获取根文件夹中所有 *.txt 文件的计数,深度为 1 级,其中直接父文件夹名称称为 testXX 是序列号) .

你有这样的结构:

C:\文件夹 +---测试1 | |文件1.txt | | | \---ABC |文件1.txt | +---测试2 |文件1.txt | \---测试3 文件1.txt

你可以使用

(Get-ChildItem -Path 'C:\Folder' -Filter '*.txt' -Depth 1 | 
    Where-Object { $_.Directory.Name -match '^test\d+$' }).Count

在上面的示例结构中返回3

【讨论】:

    【解决方案2】:

    已编辑:我想我现在得到了你想要的。

    Clear-Host
    $TestPath = "C:\Folder"
    $FileCnt = 0
    
    $Dirs = Get-ChildItem -Path "$TestPath" -Directory 
    ForEach ($Dir in $Dirs) {
     $FileCnt += (Get-ChildItem -Path "$($($Dir).FullName)\*.*" -Filter "file.txt"  | 
       Measure-Object).count
    }
    $FileCnt
    

    PMental 下面的解决方案更优雅,但这也有效。 高温

    【讨论】:

    • 谢谢,但我不需要所有 .txt 文件,只需要 test1...N 文件夹中的 file.txt(也不需要子文件夹)
    【解决方案3】:

    应该这样做:

    (Get-ChildItem C:\Folder -Filter file.txt -File -Recurse -Depth 1 | Measure-Object).Count
    

    或者如果您只想要来自子文件夹而不是来自 C:\Folder 本身的文本文件,那么这个:

    $Path = 'C:\Folder'
    $Files = Get-ChildItem $Path -Filter file.txt -File -Recurse -Depth 1 | 
        Where-Object PSParentPath -notlike "*::$Path"
    ($Files | Measure-Object).Count
    

    已编辑:已编辑为仅计算“file.txt”文件。

    【讨论】:

    • 如果您按照 OP 所述将 *.txt 更改为 file.txt,则此方法有效。
    • @RetiredGeek 啊,是的,如果他实际上只想要需要更改的 file.txt 文件,那么也添加了一个详细说明的编辑。编辑:事实上,他在另一个答案中说,更新了我的答案。
    【解决方案4】:

    你已经接近了,这应该可以让你知道任何文件夹 C:\Folder\Test* 中的 file.txt 文件总数

    Write-Host ( Get-ChildItem C:\folder\test* -Directory | Get-ChildItem -Include file.txt | Measure-Object ).Count
    

    【讨论】:

    • 谢谢,但我不需要所有 file.txt 文件,只需要 test1...N 文件夹(也没有子文件夹)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-12
    • 2013-02-27
    相关资源
    最近更新 更多