将多个tsv文件转换为单个csv文件

时间:2016-09-28 10:54:23

标签: powershell csv

大家早上好

我对此非常陌生并且有点超出我的深度。我想知道在PowerShell中是否可以做一些事情(或者如果不是PowerShell,还有什么可以做到这一点)。

我们每天会收到一些电子邮件,其中包含1个或更多(我认为最多7个)TSV文件。 Outlook扩展流程正在剥离这些附件并将其放入名为“要处理的tsv文件”的文件夹中。每个文件都有一个唯一的文件名,因此不存在文件相互覆盖的问题。

如果重要,我应该提到TSV文件包含数字,数字用逗号分隔(4,000)。

这些TSV文件都需要合并到一个csv文件中,该文件在一天结束时被发送到另一个目录,我们称之为“输出csv文件”,文件名固定,以便可以导入。

处理完成后,应将TSV文件分流到归档目录,这样就不会多次处理它们。为此,我们创建了文件夹“archive tsv files”。

在“输出csv文件”目录中,我们将每天处理一次文件,所以理想情况下我们希望将此文件在12:30移动到我们称为“输出csv文件存档”的另一个目录中(如您所见)花了很多时间在文件夹命名上)。此时,我们将日期添加到文件名outputcsv,以便它变为outputcsv280916(今天)或增量(如果这更容易)(例如outputcsv1,outputcsv2等)。

如果这是一个真正的新手问题,请耐心等待,因为我对此非常陌生。

非常感谢

1 个答案:

答案 0 :(得分:0)

基本上,使用Import-Csv和Export-Csv。

if (Test-Path 'out.csv') { del 'out.csv' }
dir '*.tsv' | ForEach {
    Import-Csv $_ -Delimiter "`t" | Export-Csv 'out.csv' -Append -NoTypeInformation
    move $_ 'archive tsv files'
}

如果文件很大,这将比直接将它们作为文本读取并替换制表符而慢,但这是另一个问题。