使用Powershell导出到包含列的CSV

cngwdvgl  于 11个月前  发布在  Shell
关注(0)|答案(4)|浏览(172)

我试图做一个简单的脚本,拉在文件的名称和内容的文本文件到一个CSV文件。我能够拉在所有的信息不够好,但它不是分裂成不同的列在CSV文件。当我打开CSV文件在Excel中的一切都在第一列,我需要将这两个信息分成单独的列。到目前为止,我的工作代码如下:

$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 |

wnrlj8wa

wnrlj8wa1#

除了一些语法错误,您的代码似乎按预期工作。我担心您是否在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,但请查找文本导入向导。

voase2hg

voase2hg2#

你是说像这样的东西吗

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

字符串

yjghlzjz

yjghlzjz3#

Excel会将CSV文件中的数据作为一个单独的列来处理,我总是在export-csv或convertto-csv上使用-开关将其设置为。

mccptt67

mccptt674#

这是因为您使用Out-File而不是Export-Csv。

相关问题