Excel 组合.csv并将文件名添加为列

Excel 组合.csv并将文件名添加为列,excel,csv,cmd,merge,Excel,Csv,Cmd,Merge,这是我关心的问题。我有一个包含多个.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的文件名添加为.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下载的,而这个文件是由我创建的

有人能帮忙吗


更新:刚刚选中,当我重命名一个文件时,它在上面工作?

我试图重新创建您的情况……据我所知,您的命令工作得非常好。以下是我(在Windows上)尝试的内容:

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

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

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


在合并该文件夹中的文件之前,您需要根据该文件的列数,在每个.csv文件的顶行中创建一个逗号分隔的行。嘿,我刚刚意识到,在打开每个文件并再次保存在同一文件夹中后,使用相同的名称,没有更改,一切都一样。Excel只提示我一次“您确定要以这种格式保存某些数据可能会丢失”等等。。。单击“是”并保存它。然后,当我运行该命令时,它会拾取该文件。尽管它以前也是csv,但将其保存为csv就可以了。所以这肯定和csv文件本身有关,特别是和格式有关。每个.csv文件都有包含字段名的第一行吗?