问题的深入解释:
我正在尝试在计算机上自动执行一个过程,但遇到了一些困难。每天,我都会收到一封包含 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
答案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
唯一的文件(或至少是唯一的文件) ,所以可以。如果是这样,为什么不呢.txt
current
*.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 行:它会让你知道提取已完成,尽管你可能看不到这一点(至少在我使用它的方式中)。
我希望这可以帮助别人。:-)