如何使用PowerShell将多个文本文件的列合并为一个csv文件?

时间:2013-05-29 08:25:14

标签: powershell text csv

我有多个测量文件,每个文件都有一列数字数据。 (更新:脚本应适用于可变数量的测量文件。)

data1.dat

5.82138
2.79191
3.99286

data2.dat

0.00108889
0.00217778
0.00326667

...

dataN.dat

1
1
1.41421

如何使用 Powershell 将这些数据文件合并到逗号分隔值文件中?

"data1","data2.dat",...,"dataN.dat"
5.82138,0.00108889,...,1
2.79191,0.00217778,...,1
3.99286,0.00326667,...,1.41421

相关

2 个答案:

答案 0 :(得分:2)

这是一种方式:

$files = Get-ChildItem D:\temp *.dat
$header = $files|foreach {$_.basename}
$content= $files | foreach { ,(gc $_.fullname) }

$lines = for($i=0; $i -lt $content[0].Count; $i++)
{
    $line = for($x=0; $x -lt $files.count; $x++)
    {
        $content[$x][$i]        
    }

    $line -join ','
}

$lines | ConvertFrom-Csv -Header $header | Export-Csv data.csv

答案 1 :(得分:1)

您可以尝试这样的事情:

$file1 = "C:\firstTxtFile.txt"
$file2 = "C:\SecondTxtFile.txt"
$outputFile = "C:\Output.txt"

$file1String = Get-content $file1 
$file2String = Get-content $file2

'"data1.dat","data2.dat"' > $outputFile

$counter = 0
while(($file1String[$counter] -ne $null) -and ($file2String[$counter] -ne $null)){
    $Line = $file1String[$counter] + "," + $file2String[$counter]
    $line >> $outputFile
    $counter++
}

这将采用两个文本文件并将它们组合成一个输出文件。

注意:每次运行时都会覆盖输出文件。