【问题标题】:BAT File to delete old log entries from a TXT FileBAT 文件从 TXT 文件中删除旧的日志条目
【发布时间】:2016-10-16 13:15:24
【问题描述】:

我有一台 PC,它在一天中的不同时间运行特定的 BAT 文件。为了确保跟踪所有任务的发生,我让每个任务在名为tack.txt 的日志文件中注册一个条目。这通常是它的外观:

Start Cams @ 10/09/2016 15:11:43 
Update List @ 11/09/2016 14:13:47
EPG Update @ 11/09/2016 16:59:48 
Start Cams @ 11/09/2016 17:01:35 
Restart @ 13/09/2016 17:16:52 

每个条目都在单独的行上,并有显示的日期和时间。

是否可以创建一个 BAT 文件来删除超过 3 天的条目以保持流程整洁?

【问题讨论】:

  • 一个简单的 exe 就可以做到。一个进程每天晚上运行并使用前几天的三个文件,将它们复制到前一天怎么样。要查看它,您可以将它们连接起来并根据需要显示。
  • 请注意stackoverflow.com 不是免费的脚本/代码编写服务。如果您告诉我们到目前为止您已经尝试过什么(包括您已经在使用的脚本/代码)以及您遇到的问题,那么我们可以尝试帮助解决具体问题。您还应该阅读How do I ask a good question?
  • 是的,有可能。但是你需要展示你自己的努力!我们不会免费为您编写脚本!请在这里学习how to ask

标签: batch-file for-loop logging


【解决方案1】:

是的。使用 Batch 很难获得昨天的日期(处理跨月/年/闰日的特殊情况),但在 Powershell 的帮助下很容易。

你可以像这样得到日期:

for /f %%a in ('"powershell [DateTime]::Now.AddDays(-2).ToString('dd/MM/yyyy')"') do ( set today-2=%%a )

然后你可以像这样搜索它们,并将匹配的行输出到文件中:

findstr "%today-2% %today-1% %today%" test.txt >matching.txt

然后您可以通过copy /ydel 将您的日志文件替换为matching.txt。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多