2015-05-13 63 views
1

我想做一個簡單的腳本,將文件的名稱和所述文本文件的內容拉入CSV文件。我能夠將所有信息都足夠好,但不會將其分成CSV文件中的不同列。當我在excel中打開CSV文件時,所有內容都位於第一列,我需要將兩位信息分隔爲不同的列。到目前爲止我的工作代碼如下:使用Powershell導出到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 | 
+0

我_really_想看到一些示例輸出。有幾種方法可以解釋你的輸出應該是什麼樣子。 – Matt

+0

不幸的是,我無法發佈輸出的照片。截至目前,儘管它在同一列中顯示了數據之間的逗號。我需要的是將數據按列分隔。 – Munchie

+0

如果您的數據已經是逗號,我在這裏沒有看到問題?當你在記事本中打開它看起來是否正確?您可能只是在Excel中進行不正確的文本導入。 – Matt

回答

0

除了一些語法錯誤,您的代碼似乎按預期工作。我擔心你是否在使用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,但看看文本導入嚮導。

+0

謝謝馬特!我還是Powershell的新手,我已經通過調整我的代碼來修復我的代碼和你的代碼之間的語法錯誤差異,並且它似乎解決了這個問題。現在一切都在正確的列! – Munchie

0

你的意思是這樣的?

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 
0

Excel將處理分隔的csv文件中的數據;作爲一個單獨的列。 我總是在export-csv或convertto-csv上使用-delimiter開關將其設置爲分隔符。