【问题标题】:Combining two CSV files into one CSV将两个 CSV 文件合并为一个 CSV
【发布时间】:2015-07-17 17:15:16
【问题描述】:

我最近做了一个简单的脚本,它导入一个源 CSV 文件并使用 Add-Member 函数创建一个新列,然后将来自目标 CSV 文件的数据插入到该列中,然后导出到一个新文件。我的数据示例是这样的:

注意:这在 Powershell v1.0 上失败

来源 CSV:

File Path
C:\Users\User\Documents - Filetype: xlsx
C:\Users\User\Documents - Filetype: docx
C:\Users\User\Documents - Filetype: pdf

目标 CSV:

File Count
    0
    1
    2

结果 CSV:

File Path
C:\Users\User\Documents - Filetype: xlsx
C:\Users\User\Documents - Filetype: docx
C:\Users\User\Documents - Filetype: pdf

除了以上不是我想要的结果。这是我目前的代码,我需要它才能在 Powershell v1.0 上工作,目前它不能,它适用于 2.0 及更高版本。这是我的代码和期望的结果:

$source = Import-Csv -Path "C:\Support\Path_Filetype.csv"
$target = Import-Csv -Path "C:\Support\Count.csv"
$source | % {$i=0} {
   $source[$i] | Add-Member Name 'File Count' Value $target[$i++]."File Count";
}
$source | Export-Csv "C:\Support\Path_Count.csv" -NoTypeInformation

期望的结果 CSV:

File Path                                        File Count
C:\Users\User\Documents - Filetype: xlsx             0
C:\Users\User\Documents - Filetype: docx             1
C:\Users\User\Documents - Filetype: pdf              2

【问题讨论】:

  • 您应该升级到 PowerShell v2(或更新版本,如果可能的话)。 Microsoft 仍支持的所有 Windows 版本至少可以运行版本 2。

标签: csv powershell powershell-1.0


【解决方案1】:

通过使用以下代码 - 这将获得您想要的结果。

$input1 = Import-Csv -Path "C:\temp\test.txt"
$input2 = Import-Csv -Path "C:\Support\Count.csv"

$list = for ($i=0; $i -lt $input1.Count; $i++) {
      New-Object -Type PSCustomObject -Property @{
        'File Path'  = $input1[$i]
        'File Count' = $input2[$i]
      }
    }

$list | Export-Csv "C:\Support\Count.csv" -NoType

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-17
    相关资源
    最近更新 更多