文件和文件夹计数

时间:2013-01-04 13:40:02

标签: powershell

远程服务器上有一个文件夹,里面有各种子文件夹。它是完全嵌套的。我想:

  1. 准备包含文件夹名称的HTML报告。
  2. 对于每个文件夹,它还应记录文件计数。
  3. 代码需要附加已创建的HTML文件。
  4. 所需列:文件夹名称,文件夹路径,文件计数
  5. 下面是代码片段,它是我的主脚本的一部分。我是PowerShell的新手。

    有人可以帮忙吗?

    $server_dir = "D:\Data\Inbox"
    $does_dir_e = (Test-Path $server_dir)
    
    if($does_dir_e)
    {
           $fso = New-Object -com "Scripting.FileSystemObject"
            $f = $fso.GetFolder($server_dir)
    
        foreach($folder in $f.subfolders)
        {
    
           $fcount = $((Get-ChildItem $folder.Path).count)
           $fname = $folder.name | Convertto-HTML -Fragment  >> C:\Temp\Server.html
    
        }
    }
    

2 个答案:

答案 0 :(得分:3)

你实际上并没有说出什么不适合你,但是下面的脚本应该让你开始。

外部循环遍历文件夹(PSIsContainer)意味着它是一个文件夹。 内循环使用measure-object计算每个文件夹中的文件数,我们从这个计数中过滤掉文件夹,只给我们文件计数。

$path = "D:\Data\Inbox"

# Enumerate the given path recursively
Get-ChildItem -Path $path -Recurse | Where-Object {$_.PSIsContainer} | %{

    # Add a user-defined custom member with a value of the filecount this
    # time not recursively (using measure object)
    $_ | add-member -membertype noteproperty -name FileCount -value (Get-ChildItem -Path $_.Fullname | 
        Where-Object {!$_.PSIsContainer} | 
        Measure-Object).Count

    # Output the required values
    $_ | select Name, FullName, FileCount | ConvertTo-Html -Fragment
}

答案 1 :(得分:2)

这是你想要的吗?我以前没有使用过HTML cmdlet,所以请注意它很丑:)

$server_dir = 'D:\Data\Inbox'

if(Test-Path $server_dir)
{
       $folders = Get-ChildItem $server_dir -Recurse | where {$_.PSIsContainer}
       $output = @()

    foreach($folder in $folders)
    {
       $fname = $folder.Name
       $fpath = $folder.FullName
       $fcount = Get-ChildItem $fpath | where {!$_.PSIsContainer} | Measure-Object | Select-Object -Expand Count
       $obj = New-Object psobject -Property @{FolderName = $fname; FolderPath = $fpath; FileCount = $fcount}
       $output += $obj

    }
       #Output to HTML
       $output | ConvertTo-Html -Fragment >> 'C:\Temp\Server.html'
}
相关问题