【问题标题】:Add timestamp to log lines from batch output将时间戳添加到批处理输出中的日志行
【发布时间】:2017-02-04 13:41:21
【问题描述】:

我有一个计划运行的简单批处理文件,基本上只是将远程网络共享备份到我的计算机。

@ECHO OFF
xcopy \\10.8.0.1\share\ E:\backup\ /c /s /r /d /y /i >> E:\backup\backup.log

日志中的输出如下所示:

\\10.8.0.1\share\test.txt
1 File(s) copied
\\10.8.0.1\share\New Microsoft Word Document.docx
1 File(s) copied

基本上我只想为每个日志条目添加一个日期和时间戳。我该怎么做?

【问题讨论】:

  • 如何将@echo off 替换为@echo on 和@prompt $D, $T:$S 并将@prompt 附加到您的批处理文件并将其作为一个整体重定向,例如batch-file.bat > log-file.txt?

标签: windows datetime batch-file timestamp


【解决方案1】:

您可以将 DATE% 和 %TIME% 回显到 backup.log。

echo %DATE% %TIME% >> E:\backup\backup.log

这可能是最简单的。

您还可以使用 robocopy 获得更丰富的日志记录选项。

【讨论】:

    【解决方案2】:

    标准变量%date%和%time%就是您要找的。​​p>

    您可以将命令输出的行作为带有for循环的单行传递,并且在它们之间

    @echo off
    for /f "delims=" %%i in ('xcopy \\10.8.0.1\share\ E:\backup\ /c /s /r /d /y /i') do (
        echo [%date%, %time%] %%i >> E:\backup\backup.log
    )
    

    简短说明:循环将命令的输出拆分为单行。对于每一行,程序会回显时间戳,然后是输出的一行。然后它对xcopy 命令返回的每一行重复。

    【讨论】:

    • 工作了一个魅力伴侣!谢谢!
    • 没什么可感谢的 :) 这些问题帮助我和你一样学习。
    • 关于如何使其异步的任何想法,以便在父进程输出它们时立即记录这些行并且不需要等待它完全完成?
    猜你喜欢
    • 1970-01-01
    • 2021-07-08
    • 2011-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    相关资源
    最近更新 更多