使用Powershell导出到包含列的CSV
我正在尝试做一个简单的脚本,将文件名和所述文本文件的内容拉入CSV文件。我能够很好地提取所有信息,但它不会在CSV文件中拆分为不同的列。当我在excel中打开CSV文件时,所有内容都在第一列,我需要将两位信息分隔成单独的列。到目前为止,我的工作代码如下:使用Powershell导出到包含列的CSV,powershell,csv,export,Powershell,Csv,Export,我正在尝试做一个简单的脚本,将文件名和所述文本文件的内容拉入CSV文件。我能够很好地提取所有信息,但它不会在CSV文件中拆分为不同的列。当我在excel中打开CSV文件时,所有内容都在第一列,我需要将两位信息分隔成单独的列。到目前为止,我的工作代码如下: $Data = Get-ChildItem -Path c:path -Recurse -Filter *.txt | where {$_.lastwritetime -gt(Get-Date).addDays`enter code here`
$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|
其中对象{$\ LastWriteTime-gt(获取日期).addDays(-25)}
$outfile=“C:\temp\test.csv”
If(测试路径$outfile){Remove Item$outfile-Force}
foreach($数据中的信息){
$content=获取内容$info.FullName
“$($info.BaseName),$content”|添加内容$outfile
}
我不知道您有什么版本的Excel,但请查找文本导入向导 Excel将处理以bij分隔的csv文件中的数据;作为单个列。
我总是使用export csv或convertto csv上的-delimiter开关将其设置为分隔符。我确实希望看到一些示例输出。有两种方法可以解释你的输出应该是什么样子。不幸的是,我还不能发布输出的图片。到目前为止,它显示在同一列中,数据之间带有逗号。我需要的是用列分隔数据……如果您的数据已经用逗号分隔,我看不出有什么问题吗?在记事本中打开时,它看起来正确吗?您可能只是在Excel中进行了不正确的文本导入。我在Excel中将其作为CSV打开,它将所有内容都放在第一列中,如上图所示,并用逗号分隔信息。我一直在到处寻找如何将我的信息分成几列,每个人都说它是由逗号完成的,但对我来说它没有分开…这并不能回答我的问题。记事本里是什么样子的?谢谢Matt!我还是Powershell的新手,我已经检查并调整了我的代码,以修复我的代码和您的代码之间的语法错误差异,它似乎已经修复了这个问题。现在所有内容都在正确的列中!