我有这部分脚本创build一个名为fileName
的variables用于命名文件。
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的帮助。
在最后一个帮助页面上解释了在分析包含这些环境变量引用的行时, %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,4 %date:~-4,4%
当前语言环境日期的最后4个字符,显然是年份, %date:~-10,2%
从当前语言环境日期右侧的第十个和第九个字符(最有可能是该月份) %date:~-7,2%
从当前语言环境日期右侧的第七个和第六个字符(最有可能是当天) YYYYMMDD
日期和格式为HHmm
时间之间附加一个下划线作为分隔符, %time:~0,2%
附加%time:~0,2%
当前语言环境时间的前两个字符%time:~0,2%
,明显是小时, %time:~3,2%
,当前语言环境时间的第四和第五个字符,显然是分钟和 .bak
。 具有多个子字符串的变量定义的结果可以通过在命令提示符窗口中执行来验证:
echo db_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%.bak
从日期字符串的子字符串引用是从右侧(字符串的结尾)而不是左侧(字符串的开始)完成的,以使定义在工作日独立存在或在日期字符串的开始处丢失。
在DOS中使用SET可以设置一个环境变量,以后可以通过其他DOS命令直接或者通过批处理文件来获取。
例如;
SET PATH =%PATH%; C:\ MyStuff
上面的路径添加了C:\ MyStuff。
SET FRIEDRICE = YES
这将创建一个名为FRIEDRICE的环境变量,并将该值设置为YES。
该值只对当前的命令提示符会话有效,除非使用其他方法更持久地进行设置。
在过去的美好时代,AUTOEXEC.BAT经常被用来建立基本的操作环境。
编辑
莫菲的回答是完全正确的。 在你的情况下,SET命令的右侧是将文件名(稍后用于某处)设置为当前的环境变量。 可悲的是,我误解了这个问题,并认为你是在问SET而不是定下了什么。 您可以在命令提示符下键入SET(不带参数)来测试SET命令。 当前的环境变量将被回显。