双百分比绝对没有任何意义。这只是两个变量并排扩展的结果,例如:
echo %firstname%%lastname%
\_________/\________/
Two separate expansions.
波形符给你一个子字符串。就你而言,%date:~10,4%
给出偏移量十处的四个字符date
环境变量(在这种情况下是年份,因为格式可能是Thu 29/12/2011
,偏移量从零开始)。
如果您输入set /?
在 Windows 命令提示符下,它将向您解释所有选项,包括使用负偏移量从end字符串的。
但是,您应该记住,date
环境变量格式取决于区域设置,因此这种简单的字符串提取不太可能适用于所有国际版本的 Windows(这在几年前让我感到不安)。
更好的解决方案是使用 WMI 来获取日期组件,例如 onRob van der Woude 出色的脚本页面 http://www.robvanderwoude.com/datetiment.php#SortDate5,为了完整性而复制到这里:
FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Dayˆ,Hourˆ,Minuteˆ,Monthˆ,Secondˆ,Year /Format:table') DO (
IF NOT "%%~F"=="" (
SET /A SortDate = 10000 * %%F + 100 * %%D + %%A
SET /A SortTime = 10000 * %%B + 100 * %%C + %%E
SET SortTime=0000000!SortTime!
SET SortTime=!SortTime:~-6!
)
)