我需要有12小时格式的文件名 - 从1到12(上午或下午可选),如下所示:
myfile_2pm.txt
我编写了脚本,但它仅适用于24小时格式,如果因为冒号而具有“1位”小时时会崩溃:
Hello > myfile_%time:~-0,2%.txt
答案 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