Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Powershell导出到包含列的CSV_Powershell_Csv_Export - Fatal编程技术网

使用Powershell导出到包含列的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`

我正在尝试做一个简单的脚本,将文件名和所述文本文件的内容拉入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|
其中对象{$\ 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的新手,我已经检查并调整了我的代码,以修复我的代码和您的代码之间的语法错误差异,它似乎已经修复了这个问题。现在所有内容都在正确的列中!