通过命令行自动提取文本文件并将其合并为单个文本文件

通过命令行自动提取文本文件并将其合并为单个文本文件

问题的深入解释:

我正在尝试在计算机上自动执行一个过程,但遇到了一些困难。每天,我都会收到一封包含 txt 文件的 zip 文件电子邮件。我有一个脚本,可以自动获取附件并将​​其转储到本地目录中。

现在,我正在尝试弄清楚如何从目录中获取 txt 文件的内容并将其附加到“主文件”。所以基本上,现在它的工作原理是,我每天都会收到一份存档,即 [TODAY'S_DATE].zip。脚本会将该存档移动到一个文件夹中。然后,我有一个 .bat 文件,它将内容提取到名为 [TODAY'S_DATE] 的文件夹中,并将存档移动到名为“Completed”的文件夹中。我需要知道如何在提取文件时从文件中取出文本并将其转储到会不断变大的“Master.txt”文件中。

这将避免将文件提取到其自己的目录并手动将文本从中复制到主文件的需要。

我的设置:

  • 使用Windows 7
  • 使用 7zip 命令行进行提取
  • 使用 .Bat 文件将文件从存档提取到目录

问题:

  • 需要从档案中取出 txt 并将其合并到“master.txt”文件中。

.bat 文件的当前内容:

7za x *.zip -o*

COPY /Y *.zip " \Completed\"

@echo extraction complete

我非常感谢任何可以提供的帮助。我知道这真的很冗长,但当我看到这些类型的问题时,通常没有提供足够的细节。再次感谢。

答案1

您可以使用“type”命令和“>>”运算符将一个文件的内容附加到另一个文件,如下所示:

type todaysfile.txt >> masterfile.txt

您可能首先必须在主文件中插入一个新行,以便新内容从其自己的新行开始,如下所示:

echo. >> masterfile

如果您不知道文件名,您可以像这样将目录“completed”中的每个文件附加到其中:

type completed\* >> masterfile.txt

“type” 和“echo” 将输出内容,“>>” 运算符告诉它将该输出附加到文件中。

来源:类型回声命令重定向

答案2

很简单:
copy file1.txt+fileX.txt intome.txt或者copy singlefile.txt+intome.txt

编辑:刚刚读了你对你帖子的评论。所以你不知道文件名?让我把上面的内容扩展一下……稍等一下 :)

EDIT2:我不得不搜索它,我认为你能做的最简单的事情就是不知道文件名是:copy /b *.txt newfile.txt截至用于连接多个文件的命令行或批处理 cmd

答案3

我不确定我是否理解了你关于不知道文件名称的评论。我猜你的情况是你的目录结构如下:

| ︙
|
+---当前
| 730643_594352.txt
|
+---主人
| 主.txt

你不知道文件730643_594352.txt的名称( ) ——但它是目录中current唯一的文件(或至少是唯一的文件) ,所以可以。如果是这样,为什么不呢.txtcurrent*.txt

ren current\*.txt current\today.txt

然后按名称对其进行操作(today.txt)?如果您需要保留其在电子邮件 zip 中收到的名称,请创建一个并行temp目录并执行

copy current\*.txt temp\today.txt

答案4

我要感谢所有花时间回答问题的人。我在 7Zip 的文档中进行了更多挖掘,并测试了一些内容,最终找到了答案。

我确信此页面上的许多答案可以以各种方式使用以实现相同的结果,但我想尽可能避免文件处理。

需要的是从 7zip 切换 (-so)。这允许您将文件提取到 STDOUT,并且可以将流重定向到您想要的任何文件。

它看起来是这样的:

7za e *.zip -y -so >> masterlist.txt

这样我就不用再将文件提取到目录中,从而节省磁盘空间和文件处理。如果您知道目录结构并且知道文件名(我没有那么幸运),那么您可以使用:

7za e *.zip -ir!PATH\FILENAME.txt -y -so >> masterlist.txt

此外,如果有人想看可以运行的 .bat 文件,这就是我所拥有的。

7za e *.zip -y -so >> masterlist.txt
MOVE /Y *.zip  Completed
@echo extraction complete

第 1 行:7zip 提取单个文件并将输出发送到 STDOUT,然后将其附加 (>>) 到 masterlist.txt。

第 2 行:该 zip 存档被移动到“已完成”文件夹,因此将来不会再次处理它。

第 3 行:它会让你知道提取已完成,尽管你可能看不到这一点(至少在我使用它的方式中)。

我希望这可以帮助别人。:-)

相关内容