1

如何将日志文件中条目的日期时间格式转换为与文件本身的日期时间格式相同?

例子:

logfile.txt有时间戳:

'date modified' 2013-07-31 03:15

里面有以下条目

2013/07/31 03:15 DATABASE SUCCESSFULLY COMPLETED

使用批处理脚本,如何将日志文件中的 2013/07/31 转换为 2013-07-31?

只是出于好奇,是否可以更改 Windows 操作系统的日期时间格式?例如。您在 YYYY/MM-DD 或 YYYY-MM-DD 的文件和文件夹上看到的时间戳?

4

3 回答 3

2

这真的是一个非常好的、简单的语法。如果你有一个变量中的行,它不需要是一个复杂的解决方案:

set theline=%theline:/=-%

这当然如上所述,如果您已经将相关行放入变量中。如果这不只是一次使用并且需要写回原始文件,那么当然需要更多的代码。

于 2013-08-01T10:13:01.373 回答
1

使用名为 REPL.BAT 的混合 JScript/批处理实用程序非常容易完成,该实用程序在标准输入上执行正则表达式搜索和替换并将结果写入标准输出。该实用程序是纯脚本,可​​在从 XP 开始的任何 Windows 版本上运行;无需下载exe。REPL.BAT 可在此处获得。完整的文档嵌入在脚本中。

假设 REPL.BAT 位于您的当前目录中,或者更好的是,位于您的 PATH 中的某个位置:

@echo off
set "file=yourFile.txt"
type "%file%" | repl "^(\d{4})/(\d\d)/(\d\d .*DATABASE SUCCESSFULLY COMPLETED)" "$1-$2-$3" >"%file%.new"
move /y "%file%.new" "%file%" >nul
于 2013-08-01T00:02:52.470 回答
0

date命令和%DATE%%TIME%变量使用的格式由系统的区域设置决定。

您可以将日期转换YYYY/MM/DDYYYY-MM-DD这样的:

@echo off

setlocal EnableDelayedExpansion

set "logfile=C:\path\to\logfile.txt"

(for /f "tokens=1*" %%l in (%logfile%) do (
  set d=%%l
  echo.!d!|findstr /r "^[0-9][0-9][0-9][0-9]/[0-9][0-9]/[0-9][0-9]$" >nul && set d=!d:/=-!
  echo.!d! %%m
)) >"%logfile%.new"

del "%logfile%"
move "%logfile%.new" "%logfile%"
于 2013-07-31T20:12:21.630 回答