我目前在桌面上的批处理文件Backup.bat中有以下代码。它用于每天备份excel电子表格文件,并通过附加当前日期和时间对其进行重命名。 File.xlsx 被复制并粘贴到新文件夹中文件Sun-06-24-2012 23.21.46PM.xlsx
目前日期和时间附加为Sun-06-24-2012 23 .21.46PM.xlsx但我希望将其添加为Sun-06-24-2012 11 .21.46PM.xlsx使用12小时时钟而不是24小时时钟格式。
以下是我目前在Windows XP Professional中使用的代码。有谁知道如何以12小时时钟格式而不是24小时时钟格式附加时间,因为它目前在下面的代码中。
@For /F "tokens=1,2,3,4 delims=/ " %%A in ('Date /t') do @(
Set DayW=%%A
Set Day=%%B
Set Month=%%C
Set Year=%%D
Set All=%%A-%%B-%%C-%%D
)
@For /F "tokens=1,2,3 delims=:,. " %%A in ('echo %time%') do @(
Set Hour=%%A
Set Min=%%B
Set Sec=%%C
Set Allm=%%A.%%B.%%C
)
@For /F "tokens=3 delims=: " %%A in ('time /t ') do @(
Set AMPM=%%A
)
copy "C:\Temp\File.xlsx" "C:\Temp\DailyBackup\File %All% %Allm%%AMPM%.xlsx"
答案 0 :(得分:2)
我同意Joey的评论,我认为你的24小时格式会更好。
此外,只要将代码传输到使用不同日期和/或时间配置的另一台计算机,您获取日期和时间的方法就会中断。
但是,无论如何...... ...
您应该从单个%TIME%扩展中获取整个时间字符串。否则你冒着获得小时的风险:午夜前的分钟:秒和午夜后的AMPM。
将@ECHO OFF
放在顶部,然后您不需要在代码中撒@
。
@echo off
For /F "tokens=1,2,3,4 delims=/ " %%A in ('Date /t') do (
Set DayW=%%A
Set Day=%%B
Set Month=%%C
Set Year=%%D
Set All=%%A-%%B-%%C-%%D
)
For /F "tokens=1,2,3 delims=:,. " %%A in ('echo %time%') do (
set /a "Hour=100%%A%%100"
set Min=%%B
set Sec=%%C
)
if %Hour% geq 12 (
set AMPM=PM
set /a "Hour-=12"
) else set "AMPM=AM"
if %Hour% equ 0 set "Hour=12"
if %Hour% lss 10 set "Hour=0%Hour%"
set "Allm=%Hour%.%Min%.%Sec%%AMPM%"
echo on
copy "C:\Temp\File.xlsx" "C:\Temp\DailyBackup\File %All% %Allm%.xlsx"
答案 1 :(得分:1)
Time /t
以24小时格式为您提供时间,大概是因为这是您计算机区域设置的默认设置。
由于time /t
似乎没有提供任何格式选项,最简单的方法是在批处理文件中添加一个额外的部分,将24小时制转换为12小时。
在Set Hour=%%A
下的某个地方你只需要:
例如:
If %Hour% gtr 12 (
Set /a Hour=%Hour%-12
)
If %Hour% == 00 (
Set Hour=12
)
Set
上的/ a开关告诉它等号右边的值是要评估的数值表达式。
如果它从1到9出现,这将使你在小时内没有前导零。你可以用另一个if
语句绕过这个来添加一个前导零,或者可能还有更多优雅的方法!