从批处理输出中添加时间戳到日志行

use*_*260 4 windows datetime timestamp batch-file

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

@ECHO OFF
xcopy \\10.8.0.1\share\ E:\backup\ /c /s /r /d /y /i >> E:\backup\backup.log
Run Code Online (Sandbox Code Playgroud)

日志中的输出如下所示:

\\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
Run Code Online (Sandbox Code Playgroud)

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

gei*_*aos 13

标准的变量%date%%time%你在找什么。

您可以将命令输出的行作为带有 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
)
Run Code Online (Sandbox Code Playgroud)

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

  • 关于如何使其异步的任何想法,以便父进程输出后立即记录这些行,并且不需要等待它完全完成? (3认同)

soj*_*oja 8

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

echo %DATE% %TIME% >> E:\backup\backup.log
Run Code Online (Sandbox Code Playgroud)

这可能是最简单的.

您还可以使用robocopy进行更丰富的日志记录选项.