Windows 使用制表符分隔符将.txt文件连接到csv文件中

Windows 使用制表符分隔符将.txt文件连接到csv文件中,windows,command-line,cmd,Windows,Command Line,Cmd,我正在尝试使用windows命令行将一组.txt文件连接到csv文件中 所以我用 type *.txt > me_new_file.csv 但是,给定行的字段以制表符分隔,最后在一列中结束。如何利用原始文本文件中的制表符分隔创建csv文件,以便使用一个或多个命令行在列中正确对齐字段?我在想可能会有类似 type *.txt > me_new_file.csv delim= ' ' 但我还没找到任何东西。 谢谢你的帮助。如果有人能告诉我相关的答案,我也将不胜感激 从命令行开始,

我正在尝试使用windows命令行将一组.txt文件连接到csv文件中

所以我用

type *.txt > me_new_file.csv
但是,给定行的字段以制表符分隔,最后在一列中结束。如何利用原始文本文件中的制表符分隔创建csv文件,以便使用一个或多个命令行在列中正确对齐字段?我在想可能会有类似

type *.txt > me_new_file.csv delim= '  ' 
但我还没找到任何东西。
谢谢你的帮助。如果有人能告诉我相关的答案,我也将不胜感激

从命令行开始,您将经历一段相当复杂的时间。Windows cmd.exe命令处理器比dash、ash或bash等要简单得多

最好的方法是将所有文件连接到.csv文件中,在文本编辑器中打开它,然后执行全局查找和替换


请注意,其他数据中没有任何逗号。

如果源文件以制表符分隔,则输出文件也以制表符分隔。根据您使用的软件,您应该能够正确加载制表符分隔的数据

假设您正在使用Excel。如果输出文件的扩展名为.csv,则Excel在打开文件时将默认使用逗号分隔的列。当然,这对你不起作用。但是,如果您将文件重命名为其他扩展名,如.txt,那么当您使用Excel打开它时,它将打开一系列对话框,您可以在其中指定格式,包括以制表符分隔的格式

如果要保留.csv扩展名并让Excel自动正确打开它,则需要转换数据。这可以很容易地用。BAT是纯脚本,从XP开始在任何Windows机器上本机运行

下面用引号将每个值括起来,以防值包含逗号文字

type *.txt 2>nul | jrepl "\t" "\q,\q" /x /jendln "$txt='\x22'+$txt+'\x22'" /o output.csv

注意:如果任何源.txt文件中的最后一行没有换行,则使用
类型*.txt
将失败。在这种情况下,下一个文件的第一行将附加到上一个文件的最后一行。不太好

您可以通过在FOR循环中单独处理每个文件来解决该问题

(for %F in (*.txt) do jrepl "\t" "\q,\q" /x /jendln "$txt='\x22'+$txt+'\x22'" /f "%F") >output.csv
以上内容设计为在命令行上运行。如果在批处理脚本中使用,则需要进行一些更改:

(for %%F in (*.txt) do call jrepl "\t" "\q,\q" /x /jendln "$txt='\x22'+$txt+'\x22'" /f "%%F") >output.csv


注意:我的回答假设所有源文件都不包含引号。如果它们确实包含引号,则需要更复杂的搜索和替换。但是使用JREPL仍然可以有效地完成这项工作。

您好,谢谢您的详细回复。昨天,在同事们的帮助下,我终于解决了这个问题。我们所做的是一个两步进。首先连接文件,就像我在问题中写的那样。然后用逗号替换制表符,这似乎起到了作用。稍后我将在上面的某个地方编写我们的解决方案。@SasonTorosean-如果您的任何以制表符分隔的源文件包含逗号,那么如果您只是用逗号替换制表符,您将得到错误的结果。你应该用引号把你的值括起来,就像我的回答一样。