gpt4 book ai didi

batch-file - 如何从批处理文件输出中向日志文件中的日志行添加时间戳?

转载 作者:行者123 更新时间:2023-12-04 15:55:00 25 4
gpt4 key购买 nike

我想在批处理输出的日志行中添加时间戳。

这是我的批处理文件:

@Echo off
SET LOGFILE=MyLogFile.log
call :Logit >> %LOGFILE%
exit /b 0

:Logit
set "affix=%date%_%time%"
set "affix=%affix::=%"
set "affix=%affix:/=%"
xcopy "I:\DF\AB\Data.xlsx" "D:\TL\BACKUP\Data_%affix%.xlsx"*

日志文件的输出:

I:\DF\AB\Data.xlsx
1 File(s) copied

我想要这样的输出日志文件:

I:\DF\AB\Data.xlsx
20180831_124500 : 1 File(s) copied

这是如何实现的?

更多信息:

  1. 在没有提示的情况下复制文件需要目标参数字符串末尾的星号。如果目标文件名末尾不使用*,则会提示询问目标是文件还是目录。
  2. xcopy 之所以被使用,是因为复制的是从网络驱动器到本地驱动器的文件。

运行批处理文件后输出结果如下:

I:\DF\AB\Data.xlsx
08312018_163959.07 :I:\DF\AB\Data.xlsx
1 File(s) copied

会不会像下面这样?

I:\DF\AB\Data.xlsx
08312018_163959.07 1 File(s) copied

因此,依赖于地区的日期格式为 MM/DD/YYY,时间格式为 HH:mm:ss.ms

最佳答案

您只XCopy一个文件,因此您知道成功时输出的最后一行将是依赖于语言的字符串1 File(s) copied
由于您已经将脚本限制为使用依赖于区域设置的 %DATE%%TIME%,因此我假设此任务的语言依赖性很好.

因此,这是一个看起来很可笑的示例脚本:

@Echo Off
Set "srcfile=I:\DF\AB\Data.xlsx"
Set "destdir=D:\TL\BACKUP"
Set "logfile=MyLogFile.log"

For %%A In ("%srcfile%") Do Set "dstname=%%~nA" & Set "destext=%%~xA"

For /F "Tokens=1-2 Delims=|" %%A In ('
Echo F^|XCopy "%srcfile%" "|%DATE:/=%_%TIME::=%|" /L 2^>Nul ^&^
Echo F^|Xcopy "%srcfile%" "%destdir%\%dstname%_%DATE:/=%_%TIME::=%%destext%" /Y ^>Nul 2^>^&1
') Do (If Not "%%B"=="" Set "_=%%B"
If Defined _ If /I "%%A"=="%srcfile%" ((
Echo %%A&Call Echo %%_%% 1 File(s^) copied)>"%logfile%"))

除了 2-4 行的变量值外,您不应更改任何其他内容.
但是,如果您使用现有的日志文件,您可能希望将最后一行的 > 更改为 >>>

关于batch-file - 如何从批处理文件输出中向日志文件中的日志行添加时间戳?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52109251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com