fileName
的变量,稍后用于命名文件。
set fileName=db_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%.bak
%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%
是什么意思?
set /?
输出命令SET 的帮助。 最后一个帮助页面解释说,在解析包含这些
dynamic
变量引用的行时,
%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%
当前语言环境日期的最后四个字符,这显然是年份,
%date:~-10,2%
当前语言环境日期右侧的第十个和第九个字符(最有可能是月份),
%date:~-7,2%
当前区域设置日期右侧的第七个和第六个字符,最有可能是这一天,
yyyyMMdd
的日期和格式为
HHmm
,的时间之间添加下划线作为分隔符
%time:~0,2%
当前区域设置时间的前两个字符,这显然是 24 小时格式中始终为两位数的小时,
%time:~3,2%
当前区域设置时间的第四个和第五个字符,显然是分钟和
.bak
。
echo db_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%.bak
日期字符串中的子字符串引用是从右侧(字符串末尾)而不是左侧(字符串开头)完成的,以使定义独立于日期字符串开头存在或缺失的工作日。
例如;
设置路径=%PATH%;C:\MyStuff
上面将 C:\MyStuff 添加到路径中。
设置炒菜=是
这将创建一个名为 FRIEDRICE 的环境变量并将其值设置为 YES。设置的值仅对当前命令提示符会话有效,除非使用其他方法更永久地设置它。
在过去的美好时光,AUTOEXEC.BAT 经常被用来设置基本的运行环境。
编辑
莫菲的回答非常正确。在您的情况下,SET 命令的右侧是将文件名(供以后在某处使用)设置到当前环境变量中。可悲的是,我误解了这个问题,认为您是在问 SET 而不是正在设置的内容。 您可以通过在命令提示符中键入 SET(不带参数)来测试 SET 命令。当前环境变量将被回显。