[英]PowerShell Import-Csv multiple CSV concatenation of columns
我想將多個具有3列和100行的.csv文件導入到單個.csv文件中,每次導入都進入接下來的3列(ABC-DEF-GHI)中,而不是全部並入前1000列的前3列中行。
我嘗試了Import-Csv
但無法控制輸出的位置。 我將不得不使用COM對象( New-Object -ComObject excel.Application
)還是有一種更干凈的方法來控制導入到哪個單元格?
標題行是
PSComputerName,HotfixID,InstalledOn
但是我需要讓每個循環都可以寫,而不是在下面。
PSComputerName,HotfixID,InstalledOn,PSComputerName,HotfixID,InstalledOn,PSComputerName,HotfixID,InstalledOn
您所描述的不是CSV的典型用例, Import-Csv
(或者說Export-Csv
)根本無法處理。 兩個cmdlet都將CSV的行轉換為具有以列標題命名的屬性的對象,反之亦然。 因此,如果要使用*-Csv
cmdlet,則列標題必須唯一。
您嘗試做的最簡單的方法可能是這樣的:
# read CSV data into distinct variables
$csv1 = Get-Content 'C:\path\to\1.csv'
$csv2 = Get-Content 'C:\path\to\2.csv'
$csv3 = Get-Content 'C:\path\to\3.csv'
# determine maximum number of rows
$max = $csv1.Count, $csv2.Count, $csv3.Count |
Sort-Object
Select-Object -Last 1
# concatenate corresponding rows from each file and write them to the output file
for ($i=0; $i -lt $csv1.Count; $i++) {
# emulate missing rows in case the CSVs don't have the same number of rows
$row1 = if ($csv1[$i]) {$csv1[$i]} else {',,'}
$row2 = if ($csv2[$i]) {$csv2[$i]} else {',,'}
$row3 = if ($csv3[$i]) {$csv3[$i]} else {',,'}
"${row1},${row2},${row3}" | Add-Content 'C:\path\to\output.csv'
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.