Windows 从批处理输出向日志行添加时间戳

Windows 从批处理输出向日志行添加时间戳,windows,datetime,batch-file,timestamp,Windows,Datetime,Batch File,Timestamp,我有一个计划运行的简单批处理文件,基本上只是将远程网络共享备份到我的计算机上 @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) co

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

@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

基本上,我只想给每个日志条目添加一个日期和时间戳。如何执行此操作?

您可以将日期%和时间%回送到backup.log

echo %DATE% %TIME% >> E:\backup\backup.log
这可能是最简单的


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

您需要的是标准变量
%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
)

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

@echo off
替换为
@echo on
@prompt$D,$T:$S
,然后将
@prompt
附加到批处理文件并将其作为一个整体重定向,如
batch-file.bat>log file.txt
,这是一个魅力伙伴的工作!谢谢没有什么值得感谢的:)这些问题帮助我和你一样学习。关于如何使其异步,以便在父进程输出行时立即记录行,而不需要等待它完全完成,有什么想法吗?