【发布时间】:2015-05-08 08:10:25
【问题描述】:
我正在编写一个批处理文件来复制一些数据,我遇到的问题是,我想在变量中捕获日期,以便可以将其用作文件名。我想要 dd-mm-yyyy 的格式。
我找到了这个例子here,但我无法将它转换成我需要的格式。
【问题讨论】:
-
我推荐 YYYY-MM-DD 以便它按时间顺序排序
标签: date batch-file
我正在编写一个批处理文件来复制一些数据,我遇到的问题是,我想在变量中捕获日期,以便可以将其用作文件名。我想要 dd-mm-yyyy 的格式。
我找到了这个例子here,但我无法将它转换成我需要的格式。
【问题讨论】:
标签: date batch-file
这是一个使用 PowerShell 的解决方案,它预装在几乎所有版本的 Windows 上,比批处理功能强大得多。
Get-Date -Format 'yyyy-MM-dd'
for /f %%a in ('powershell -nop -c "Get-Date -Format 'yyyy-MM-dd'"') do set newdate=%%a
【讨论】:
:date
set dateyear=%date:~-4%
if %date:~-7,-5%==01 set datemonth=January
if %date:~-7,-5%==02 set datemonth=February
if %date:~-7,-5%==03 set datemonth=march
if %date:~-7,-5%==04 set datemonth=April
if %date:~-7,-5%==05 set datemonth=may
if %date:~-7,-5%==06 set datemonth=June
if %date:~-7,-5%==07 set datemonth=July
if %date:~-7,-5%==08 set datemonth=August
if %date:~-7,-5%==09 set datemonth=September
if %date:~-7,-5%==10 set datemonth=October
if %date:~-7,-5%==11 set datemonth=November
if %date:~-7,-5%==12 set datemonth=December
set dateday=%date:~-10,-8%
echo It is %dateday% %datemonth% %dateyear%, sir.
exit /B 0
:xpdate
echo It is %date%, sir.
%speech% "It is %date%, sir."
exit /B 0
:w7dat
if %time:~0,-9% GTR 12 (set /a timehour=%time:~0,-9%-12) else set timehour=%time:~0,-9%
if %time:~3,1%==0 (set timeminute=%time:~4,1%) else set timeminute=%time:~3,2%
set dateyear=%date:~-4%
if %date:~-7,-5%==01 set datemonth=January
if %date:~-7,-5%==02 set datemonth=February
if %date:~-7,-5%==03 set datemonth=march
if %date:~-7,-5%==04 set datemonth=April
if %date:~-7,-5%==05 set datemonth=may
if %date:~-7,-5%==06 set datemonth=June
if %date:~-7,-5%==07 set datemonth=July
if %date:~-7,-5%==08 set datemonth=August
if %date:~-7,-5%==09 set datemonth=September
if %date:~-7,-5%==10 set datemonth=October
if %date:~-7,-5%==11 set datemonth=November
if %date:~-7,-5%==12 set datemonth=December
set dateday=%date:~-10,-8%
echo It is currently %timeminute% minutes past %timehour% on %dateday% %datemonth% %dateyear%, sir.
exit /B 0
这是我在批处理 AI 中使用的,只需将 :date :w7dat 和所有这些更改为您需要的内容
【讨论】:
解决方案
set yy=%date:~-4%
set mm=%date:~-7,2%
set dd=%date:~-10,2%
set newdate=%dd%%mm%%yy%
echo %newdate%
【讨论】:
此解决方案独立于区域设置:
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set datetime=%%I
它会给你(独立于区域设置!):
20130802203023.304000+120
( YYYYMMDDhhmmss.<fraction>+/-<timedifference to UTC> )
从这里开始,很容易:
set mydate=%datetime:~6,2%-%datetime:~4,2%-%datetime:~0,4%
echo %mydate%
【讨论】: