windows %日期:~ -4,4 %%日期:~ -10,2 %%日期:~ -7,2 %%时间:~ 0,2%%时间:~ 3,2%表示什么?

ih99xse1  于 2022-11-30  发布在  Windows
关注(0)|答案(2)|浏览(296)

我有这部分脚本,它创建了一个名为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%是什么意思?

rvpgvaaj

rvpgvaaj1#

在命令提示符窗口中打开并运行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

您可以在命令提示字符 windows 中执行,来验证这个含有数个子字串之变数定义的结果:

echo db_%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%.bak

日期字符串的子字符串引用是从右侧(字符串的末尾)而不是左侧(字符串的开头)进行的,以使定义独立于日期字符串开头出现或缺失的工作日。

xjreopfe

xjreopfe2#

在DOS中使用SET设置一个环境变量,以后可以由其他DOS命令直接或通过批处理文件检索。
比如说:

设置路径=%PATH%; C:\我的资料

上面的代码将C:\MyStuff添加到路径中。

设置薯条=是

这将创建一个名为FRIEDRICE得环境变量,并将其值设置为YES.
除非使用其他方法永久设置该值,否则该值设置仅对当前命令提示符会话有效。
在过去的好日子里,AUTOEXEC.BAT经常用于设置基本的操作环境。

编辑

  • Mofi的回答非常正确。在您的例子中,SET命令的右边是在当前环境变量中设置一个Filename(供以后使用)。遗憾的是,我误解了这个问题,以为您是在问SET而不是要设置什么。您可以通过在命令提示符下键入SET(不带参数)来测试您的SET命令。当前环境变量将被响应。*

相关问题