我想将超过 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