在命令提示符窗口中打开并在那里运行 set /? 输出命令 SET 的帮助。
在上一个帮助页面上解释了 %DATE% 扩展到 当前语言环境日期 和 %TIME% 扩展到 当前语言环境时间 解析包含这些环境的行变量引用。
日期和时间的格式取决于 Windows 区域和语言设置。因此需要在命令提示符窗口中执行
echo Date is: %DATE%
echo Time is: %TIME%
或者
echo %DATE% %TIME%
最好在上午 10:00 之前执行以了解区域设置日期和时间字符串格式。日期是工作日吗?日期字符串中日、月、年的顺序是什么?时间是 12 小时还是 24 小时格式?时间总是两位数的小时吗?
在命令 SET 的输出帮助中,还解释了 %Variable:~X,Y% 从位置 X 在字符串中以 Y 字符长度获取环境变量字符串的子字符串。
字符串中的第一个字符具有位置编号(字符索引)0。
X 的负值表示从字符串末尾(从右侧)开始的 X 个字符。
set fileName=db_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%.bak
定义一个名为fileName的变量
- 以固定字符串
db_开头,
- 附加
%date:~-4,4% 显然是年份的当前语言环境日期的最后 4 个字符,
- 用
%date:~-10,2% 附加当前语言环境日期右侧的第十个和第九个字符,这很可能是月份,
- 附加
%date:~-7,2% 当前语言环境日期右侧的第七和第六个字符,最有可能是当天,
- 在
YYYYMMDD 格式的日期和HHmm 格式的时间之间添加下划线作为分隔符,
- 附加
%time:~0,2% 当前语言环境时间的前 2 个字符,显然是小时,
- 附加
%time:~3,2%当前语言环境时间的第四和第五个字符,显然是分钟和
- 附加文件扩展名
.bak。
这个带有多个子字符串的变量定义的结果可以通过在命令提示符窗口中执行来验证:
echo db_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%.bak
日期字符串的子字符串引用是从右侧(字符串结尾)而不是左侧(字符串开头)完成的,以使定义在工作日存在或在日期字符串开头丢失。