将文件夹/目录中超过 1 天的所有文本文件合并/连接到批处理文件 (run.bat) 中的一个文本文件中

将文件夹/目录中超过 1 天的所有文本文件合并/连接到批处理文件 (run.bat) 中的一个文本文件中

我想将超过 1 天的文本文件合并到 bat/cmd 中的 output.txt 文件中。

如果我在 2021 年 10 月 28 日对文件夹中当前可用的文件运行“run.bat”,它应该只合并 2021 年 10 月 27 日的文件。因此,对于文件夹中的以下文件,“run.bat”应该合并前三个文件

文件名
XXXXX_27Oct2021-050034.txt
YYYYY_27Oct2021-045233.txt
YYYYZ_27Oct2021-045233.txt
XXXXX_28Oct2021-050034.txt
YYYYY_28Oct2021-045233.txt
YYYYZ_28Oct2021-045233.txt

目前我设法与下面的 cmd 合并,但它确实将所有文本文件合并到文件夹中的 output.txt 中。

type *.txt > newfile.txt

有什么方法可以指定文件名的一部分来进行这样的搜索并合并

set getDate = format(currentdate - 1,"ddMMMyyyy")

type %getDate% *.txt > newfile.txt

对于错误的语法或我的思维过程表示歉意。

谢谢你!!!

答案1

在批处理文件中稍微调用 Powershell 即可将昨天的日期放入变量中。

for /F "usebackq delims=" %%G IN (`powershell -command "(Get-Date).AddDays(-1).ToString('ddMMMyyyy')"`) do set "ydate=%%G"

然后,您可以使用通配符和复制命令将文件合并在一起。

copy "*_%ydate%-*.txt" "newfile.txt"

因此,这将仅复制具有昨天日期的文件。如果您想要所有超过 1 天的文件,则可以使用该FORFILES解决方案。

答案2

使用 type 和输出文件确实是合并多个 txt 文件的简单方法。您可以将 type 命令与 ForFiles 命令结合使用,以便仅键入超过一天的文件。这看起来像这样:

ForFiles /p "C:\someFolder" /m *.txt /d -1 /c "cmd /c type @file" > output.txt

相关内容