如何使用Windows命令行将12小时格式的时间添加到文件名?

时间:2014-03-02 05:11:45

标签: windows batch-file

我需要有12小时格式的文件名 - 从1到12(上午或下午可选),如下所示:

myfile_2pm.txt

我编写了脚本,但它仅适用于24小时格式,如果因为冒号而具有“1位”小时时会崩溃:

Hello > myfile_%time:~-0,2%.txt

4 个答案:

答案 0 :(得分:2)

@echo off
    setlocal enableextensions

    call :get12h hour
    echo %hour%

    echo This is a test > myfile_%hour%.txt

    exit /b

:get12h outputVar
    setlocal enableextensions
    for /f "tokens=1 delims=: " %%a in ("%time: =0%") do set /a "h=1%%a-100"
    if %h% gtr 11 ( 
        set "td=pm" & if %h% gtr 12 set /a "h-=12"
    ) else ( 
        set "td=am" & if %h% equ 0 set "h=12"
    )
    endlocal & set "%~1=%h%%td%" & exit /b

这使用一个子程序,当被调用时,在用作参数的变量中以12h格式返回当前时间。返回值将在

范围内
12am , 1am , .... 12pm, 1pm, .... 11pm

答案 1 :(得分:1)

不知道上午/下午而是单个数字 尝试输入“”,即用双引号括起命令对你有效。

答案 2 :(得分:1)

待办事项

set hr=%time:~0,2%
set hr=%hr: =0%

然后在您格式化的任何字符串中使用%hr%,以便始终获得2位数小时。

答案 3 :(得分:1)

MC ND使用纯批次有一个很好的简单解决方案。但它非常符合您的具体要求。

在Windows批处理上使用日期和时间非常痛苦,特别是如果您想要一个适用于任何语言环境的解决方案,因为%DATE%%TIME%的格式在不同机器之间会有所不同。

我写了一个方便的hybrid JScript/batch utility called getTimestamp.bat来执行日期和时间计算和格式化。它几乎可以处理您可能拥有的任何日期/时间计算或格式化任务。该实用程序是纯脚本,可​​以在XP之后的任何现代Windows机器上本机运行。完整的文档嵌入在脚本中。

假设getTimestamp.bat位于当前目录中,或者更好,位于PATH中的某个位置,则以下内容将使用您的格式在hr变量中存储当前小时:

call getTimestamp -f _{h}{pm} -r hr