簡體   English   中英

使用Powershell導出到帶有列的CSV

[英]Using Powershell to export to CSV with columns

我正在嘗試做一個簡單的腳本,將文件名和所述文本文件的內容提取為CSV文件。 我能夠很好地提取所有信息,但不會將其拆分為CSV文件中的不同列。 當我在excel中打開CSV文件時,所有內容都在第一列中,並且我需要將這兩部分信息分成不同的列。 到目前為止,我的工作代碼如下:

$Data = Get-ChildItem -Path c:path -Recurse -Filter *.txt |
where {$_.lastwritetime -gt(Get-Date).addDays`enter code here`(-25)}

$outfile = "c:path\test.csv" 
rm $outfile

foreach ($info in $Data) {
    $content = Get-Content $info.FullName
    echo "$($info.BaseName) , $content" >> $outfile
}

我想出了如何按行分隔信息,但我需要按列進行信息。 我是Powershell的新手,似乎無法擺脫這個小小的減速。 任何投入將不勝感激。 提前致謝!

輸出:

Itm# , TextContent

Itm2 , NextTextContent

我需要的:

Itm# | Text Content | 

Itm2 | NextTextContent |

你的意思是這樣嗎?

Get-ChildItem -Path C:\path -Recurse -Filter *.txt | 
  Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-25) } | ForEach-Object {
  New-Object PSObject -Property @{
    "Itm#" = $_.FullName
    "TextContent" = Get-Content $_.FullName
  } | Select-Object Itm#,TextContent
} | Export-Csv List.csv -NoTypeInformation

除了一些語法錯誤外,您的代碼似乎按預期運行。 我擔心如果文本導入在Excel中遇到問題。 我修改了一下您的代碼,但其功能與您的代碼相同。

$Data = Get-ChildItem -Path "C:\temp" -Recurse -Filter *.txt |
    Where-Object {$_.LastWriteTime -gt (Get-Date).addDays(-25)}

$outfile = "C:\temp\test.csv" 
If(Test-Path $outfile){Remove-Item $outfile -Force}

foreach ($info in $Data) {
    $content = Get-Content $info.FullName
    "$($info.BaseName) , $content" | Add-Content $outfile
}

我不知道您使用的是哪個版本的Excel,但正在尋找文本導入向導。

Excel將以分隔的csv文件中的數據進行處理; 作為單列。 我總是在export-csv或convertto-csv上使用-delimiter開關將此設置為定界符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM