【问题标题】:Using Powershell to export to CSV with columns使用 Powershell 导出到带有列的 CSV
【发布时间】:2015-07-25 00:51:50
【问题描述】:

我正在尝试做一个简单的脚本,将文件名和所述文本文件的内容提取到 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 |

【问题讨论】:

  • 真的想看看一些示例输出。有几种方法可以解释您的输出应该是什么样子。
  • 不幸的是,我还无法发布输出的图片。到目前为止,尽管它显示在同一列中,数据之间有逗号。我需要的是按列分隔数据....
  • 如果您的数据已经用逗号分隔,我在这里看不到问题吗?当您在记事本中打开时,它看起来是否正确?您可能只是在 Excel 中进行了不正确的文本导入。
  • 我在 excel 中以 CSV 格式打开它,并将所有内容放在第一列中,如上所示,用逗号分隔信息。我一直在到处寻找如何将我的信息分成几列,每个人都说它是用逗号完成的,但它对我来说并没有分开......
  • 这不能回答我的问题。它在记事本中是什么样子的?

标签: powershell csv export


【解决方案1】:

你的意思是这样的吗?

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 谢谢马特!我还是 Powershell 的新手,我已经完成并调整了我的代码以修复我的代码和你的代码之间的语法错误差异,它似乎已经解决了这个问题。现在所有内容都在正确的列中!
    【解决方案3】:

    Excel 将处理 csv 文件中以 ; 分隔的数据。作为单列。 我总是使用 export-csv 或 convertto-csv 上的 -delimiter 开关将其设置为分隔符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 2017-10-10
      • 1970-01-01
      相关资源
      最近更新 更多