【问题标题】:Combining .csv and adding filename as column结合 .csv 并将文件名添加为列
【发布时间】:2019-03-25 16:18:19
【问题描述】:

这是我的担忧。我有一个包含多个 .csv 文件的文件夹,我想将它们组合/合并到一个 csv 文件中,但我需要将每个 csv 的文件名添加为 .csv 本身的一列,这样我就可以知道哪个条目来自合并文件中的哪个 csv 文件。我没有编码经验,但是我在网上找到了一些应该这样做的解决方案。

最简洁的是这条 CMD 行:

for /f %a in ('dir /b *.csv') do for /f "tokens=*" %b in (%a) do echo %b,%a >> all.csv

我基本上在 CMD 中导航到我的 csv 文件夹,然后输入这一行并执行,但根本没有输出。所以,我不知道我做错了什么。

奇怪的是,当我在另一个包含 csv 文件的文件夹中执行它时,它适用于另一个 csv 文件。该文件与其他 csv 文件之间的唯一区别是其他文件(它不起作用)是从 Internet 下载的,而这个是我创建的。

谁能帮忙?

更新:刚刚检查过,当我重命名文件时它可以工作吗?

【问题讨论】:

  • 每个 .csv 文件的第一行是否包含字段名称?

标签: excel csv cmd merge


【解决方案1】:

我试图重现您的情况...据我所知,您的命令运行良好。这是我尝试过的(在 Windows 上):

  • 我创建了一个新文件夹。
  • 我在该文件夹中创建了 3 个 csv 文件(“file1.csv”、“file2.csv”和“file3.csv”)
  • 我在 3 个 csv 文件中的每一个中创建了一条记录(包含 3 个字段),其中一条典型记录可能类似于“100、101、102”
  • 我打开了命令提示符,导航到包含这些 csv 文件的文件夹,并按原样执行了您的命令。
  • 该命令处理了 3 个 csv 文件,并创建了一个名为“all.csv”的新文件。
  • “all.csv”中的每条记录似乎都是正确的:存在三个数据字段,并且存在第四个字段,其中包含源 csv 文件的名称(例如,“file1.csv”)。

您提到它在对从 Internet 下载的文件执行时不起作用。您能否提供有关这些文件的更多详细信息?

【讨论】:

  • 嘿,我刚刚意识到,在我打开每个文件并再次保存在同一个文件夹中后,使用相同的名称,没有更改,一切都一样。 Excel 只会提示我一次“您确定要以这种格式保存一些数据可能会丢失”等...您单击“是”并保存它。然后,当我运行命令时,它会拾取该文件。即使它以前也是 csv,但将其保存为 csv 就可以了。所以它肯定与 csv 文件本身有关,尤其是与格式有关。
【解决方案2】:

您需要将每个 csv 的文件名添加为 .csv 本身的一列吗?

在合并该文件夹中的文件之前,您需要根据该文件上的列数在每个 .csv 文件的第一行中创建一个逗号分隔的行,其中包含您的文件名。

【讨论】:

    猜你喜欢
    • 2021-08-14
    • 1970-01-01
    • 2018-08-31
    • 1970-01-01
    • 2019-11-14
    • 1970-01-01
    • 2020-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多