【问题标题】:Convert multiple tsv files to a single csv file将多个 tsv 文件转换为单个 csv 文件
【发布时间】:2025-12-15 19:15:01
【问题描述】:

大家早上好

我对此很陌生,而且有点超出我的深度。我想知道是否可以在 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 等)则递增。

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

非常感谢

保罗

【问题讨论】:

  • 这里有很多单独的问题...我认为您需要将其分解为各个部分,然后通过查看以前的问题和在线教程将其放在一起,并且如果您遇到特定的事情,请回来。首先,我会查看“VBA 打开 tsv 文件”,然后“将 tsv 文件的内容移动到新工作簿”,最后“将工作簿保存为 vba 中的 csv 文件”。剩下的就是你可以从那里解决的小事情
  • 感谢 Gallus 的回复,我会试试这个,尽管快速搜索“VBA 打开 tsv 文件”没有返回任何结果,我尝试了该问题的几种变体,除了通过 ODBC Q 和一个。
  • 这是您在第 1 步中需要执行的行:*.com/questions/19966526/… 然后将脚本的各个部分合并到一个子中,打开文件夹中的每个文件并复制内容转移到新工作簿,然后保存该工作簿。一旦你有一个脚本,如果你有问题回来,人们将能够帮助改进它。我们不能从头开始编写脚本

标签: powershell csv


【解决方案1】:

基本上,使用 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'
}

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

【讨论】:

  • 早上好,在人们的大力帮助下,这一切都是用大约 40 行代码完成的,我已经开始与 Ernest 一起参加 PowerShell 脚本课程。