【问题标题】:Export sub-folder name as path and create a csv for each parent sub-folder in a different location将子文件夹名称导出为路径,并为不同位置的每个父子文件夹创建一个 csv
【发布时间】:2020-09-15 12:13:09
【问题描述】:

我正在尝试单独导出每个父文件夹的子文件夹名称(作为路径),并在不同的位置为每个 (1,2,3) 创建一个 csv。

树示例如下所示:

C:\USERS\XXXXX\DESKTOP\TEST
├───1
│   ├───11
│   ├───111
│   └───1111
├───2
│   ├───22
│   ├───222
│   └───2222
└───3
    ├───33
    ├───333
    └───3333

我使用的脚本是:

$parentDir = "C:\Users\XXXXX\Desktop\Test";
Get-ChildItem -Recurse -Force -Depth 2 -Attribute Directory -Path $parentDir | Select-Object -Property FullName | Export-Csv Test.csv

问题是它会显示 Test 文件夹的结果,我想导出每个子文件夹的内容并在不同的位置创建一个其名称的 csv,这个过程必须重复 42 个文件夹和为每个更改 $parentDir 非常耗时..

【问题讨论】:

    标签: powershell powershell-2.0 powershell-3.0


    【解决方案1】:

    如果我理解正确,使用两个 Get-ChildItem 命令可能会更好:

    $parentDir = "C:\USERS\XXXXX\DESKTOP\TEST"
    $outputDir = "C:\USERS\XXXXX\DESKTOP"
    Get-ChildItem -Path $parentDir -Force -Directory | ForEach-Object { 
        $outCsv = Join-Path -Path $outputDir -ChildPath "$($_.Name).csv"
        $_ | Get-ChildItem -Directory | Select-Object FullName | Export-Csv -Path $outCsv -NoTypeInformation
    }
    

    使用您的示例文件夹,这将在您的桌面上写入 3 个 csv 文件,名为 1.csv2.csv3.csv,内容为:

    “全名” "D:\测试\1\11" "D:\测试\1\111" "D:\测试\1\1111" “全名” "D:\测试\2\22" "D:\测试\2\222" "D:\测试\2\2222" “全名” "D:\测试\3\33" "D:\测试\3\333" "D:\测试\3\3333"

    对于旧的 PowerShell 版本,-Directory 开关不可用,您应该使用

    Get-ChildItem -Path $parentDir -Force | Where-Object { $_.PsIsContainer } | ForEach-Object { ... }
    

    【讨论】:

    • 用两个Get-ChildItem 尝试了类似的东西,但输出从来都不是预期的。而且,从来没有想过将$outCsvChildPath 结合使用。太好了,谢谢。
    【解决方案2】:
    %{foreach( $a in (Get-ChildItem -Recurse) ){$a.FullName}} | Out-File neu.txt
    Get-Content .\neu.txt | Convertto-Csv | Out-file mac.csv
    

    我试过这样。

    【讨论】:

    • 输出是单个 csv 文件。最好将每个子文件夹导出为具有相同名称 (1,2,3) 的 csv 文件,每个子文件夹都有自己的子文件夹路径,例如:1.csv C:\Temp\Test\11;_C:\Temp\Test\111;_C:\Temp\Test\1111) 2.csv C:\ Temp\Test\22;_C:\Temp\Test\222;_C:\Temp\Test\2222) 3.csv C:\Temp\Test\33;_C:\Temp\Test\333;_C:\Temp\Test\3333) 我在link 上找到了一些信息,但是我不确定如何将其与Select-Object -Property FullName 集成并将输出导出到不同的位置
    猜你喜欢
    • 2019-08-28
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多