Powershell 我希望能够分割目录及其子目录的输出

Powershell 我希望能够分割目录及其子目录的输出,powershell,directory,Powershell,Directory,我希望能够使用PowerShell拆分目录及其子目录的输出。目前这是我的代码: Get-Childitem -path \\serverName\lettertext\Customer -Recurse -Include *.txt | Out-file c:\Letters\output.txt 这将列出目录和子文件夹的所有文本内容 完整目录格式为: \\serverName\lettertext\Customer\Client Group\Client\Client Division

我希望能够使用PowerShell拆分目录及其子目录的输出。目前这是我的代码:

Get-Childitem -path \\serverName\lettertext\Customer -Recurse -Include *.txt |
  Out-file c:\Letters\output.txt
这将列出目录和子文件夹的所有文本内容

完整目录格式为:

\\serverName\lettertext\Customer\Client Group\Client\Client Division 试试这个

$folder = 'c:\temp'
$customer = Split-Path $folder -Leaf
Get-Childitem -Path $folder -Recurse -Include *.txt | % {
    $sub = ($_.fullname -replace [regex]::Escape($folder)).trim('\')
    $split = $sub.split('\')
    if ($split.count -eq 4) {
        [pscustomobject]@{
            Customer = $customer
            ClientGroup = $split[0]
            Client = $split[1]
            ClientDivision = $split[2]
            File = $split[3]
        }
    }
} | epcsv c:\Letters\output.csv -not
一种选择:

Get-Childitem -path \\serverName\lettertext\Customer -Recurse -Include *.txt |
    ForEach-Object {
        $Parts = $_.fullname.split('\')[4..7]
        [PSCustomObject]@{
            Customer = $Parts[0]
            ClientGroup = $Parts[1]
            Client = $Parts[2]
            ClientDivision = $Parts[3]
            FileName = $_.FullName | Split-Path -Leaf
        }
} | Export-Csv c:\somedir\clientfile.csv -NoTypeInformation

什么是“目录的输出”?这里有点猜测,但是您想将每个文件夹的结果输出到单独的文件中吗,根据文件夹的名称?基本上,父目录包含包含txt文件的子目录,或包含文件的另一个子目录,或包含文件的另一个子目录。例如,这是脚本的输出:目录:\\serverName\lettertext\Customer\Client Group Mode LastWriteTime长度名称------a--11/6/2013 2:39 PM 5167 COBRATermination.txtSO basic,而不是将结果标记为\\server\customer\etc\etc…我希望它只将结果输出为:customer-CLient-Group-CLient-Division,然后输出文本文件。当我将输出粘贴到excel中时,无需重新格式化所有格式。为此,我添加了一个大括号。未返回有关客户、ClientGroup、CLient和CLientDivision的任何信息。我正在研究这个问题。我发布的第一个版本中有一个输入错误,在对象哈希中使用$parts[4]到$parts[7]。应该是$parts[0]到$parts[3]。答案中已对其进行了修复,但它本来会生成该结果。仍然不知道为什么它不返回.txt文件所在的子文件夹。让它工作吧!必须重组文件夹;这几乎就是我所做的,我得到了所需的输出,但文本文件仍然填充在错误的列中,但我可以手动修复。谢谢!你太棒了!不客气。感谢@Anthony Stringer的编辑。他的解决方案可能也会起作用(没有测试),但我认为简单的文本分割会更容易遵循。
$folder = 'c:\temp'
$customer = Split-Path $folder -Leaf
Get-Childitem -Path $folder -Recurse -Include *.txt | % {
    $sub = ($_.fullname -replace [regex]::Escape($folder)).trim('\')
    $split = $sub.split('\')
    if ($split.count -eq 4) {
        [pscustomobject]@{
            Customer = $customer
            ClientGroup = $split[0]
            Client = $split[1]
            ClientDivision = $split[2]
            File = $split[3]
        }
    }
} | epcsv c:\Letters\output.csv -not
Get-Childitem -path \\serverName\lettertext\Customer -Recurse -Include *.txt |
    ForEach-Object {
        $Parts = $_.fullname.split('\')[4..7]
        [PSCustomObject]@{
            Customer = $Parts[0]
            ClientGroup = $Parts[1]
            Client = $Parts[2]
            ClientDivision = $Parts[3]
            FileName = $_.FullName | Split-Path -Leaf
        }
} | Export-Csv c:\somedir\clientfile.csv -NoTypeInformation