使用批处理文件转换日期格式

使用批处理文件转换日期格式

我有一个包含以下内容的文本文件许多日期条目格式如下:

YYYY/MM/DD

如何将其转换为以下格式?

YYYY-MM-DD

该文件包含许多日期条目,因此它应该改变所有条目的日期格式......

谢谢

答案1

使用名为 REPL.BAT 的混合 JScript/批处理实用程序可轻松完成此操作,该实用程序在 stdin 上执行正则表达式搜索和替换并将结果写入 stdout。该实用程序是纯脚本,可​​在 XP 及以上版本的任何 Windows 上运行;无需下载 exe。REPL.BAT 可在此处获得。完整文档嵌入在脚本中。

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

@echo off
set "file=yourFile.txt"
type "%file%" | repl "(\d{4})/(\d\d)/(\d\d)" "$1-$2-$3" >"%file%.new"
move /y "%file%.new" "%file%" >nul

可以根据需要调整正则表达式,以使搜索和替换尽可能具体。

答案2

使用此代码。它将逐行遍历每一行input.txt并将更新的行输出到output.txt。它将查找具有当前年份和月份的行(月份的第一天,如果您解析昨晚的文件,可能会出现问题)。只有匹配的行才会被更改,因此每个 / 都会变成 -

@echo off
setlocal enabledelayedexpansion

    REM Works on any NT/2k machine independent of regional date settings
    REM courtesy of http://stackoverflow.com/questions/203090/how-to-get-current-datetime-on-windows-command-line-in-a-suitable-format-for-us
    SETLOCAL ENABLEEXTENSIONS
    if "%date%A" LSS "A" (set toks=1-3) else (set toks=2-4)
    for /f "tokens=2-4 delims=(-)" %%a in ('echo:^|date') do (
      for /f "tokens=%toks% delims=.-/ " %%i in ('date/t') do (
        set '%%a'=%%i
        set '%%b'=%%j
        set '%%c'=%%k))
    if %'yy'% LSS 100 set 'yy'=20%'yy'%
    set Today=%'yy'%-%'mm'%-%'dd'% 
    ENDLOCAL & SET v_year=%'yy'%& SET v_month=%'mm'%& SET v_day=%'dd'%

REM above stuff near beginning of code

REM Performs substitution only for strings that include this year and month.
    for /f "tokens=*" %%a in (input.txt) do (
        for /f "tokens=1" %%f in ('echo %%a ^| findstr %v_year% ^| find "%v_month%" /c') do set count=%%f
        if [!count!]==[1] (
            set outputline=%%a%
            set outputline=!outputline:/=-!
            echo.!outputline! >> output.txt
            REM output changed line
        ) else (
            echo.%%a >> output.txt
            REM output unchanged line
        )

    )  

答案3

如果脚本解决方案不适合您(您正在使用合适的文本编辑器查看文件),请在查找/替换操作中尝试使用正则表达式:

寻找 ([1-2][0-9][0-9][0-9])/([0-1][0-9])/([0-3][0-9]) 或者
寻找 ([1-2]\d\d\d)/([0-1]\d)/([0-3]\d)

用。。。来代替 \1-\2-\3

对于DD-MM-YYYY格式,您可以用 替换\3-\2-\1

编辑:这是一个 GUI 解决方案。示例使用记事本2在 Notepad2 中使用正则表达式查找/替换

编辑:一些文本编辑器,例如记事本++超级编辑批量处理只需单击一次即可将上述查找/替换操作应用于多个文件的功能。

相关内容