Windows 批处理文件日/月/年语法?

Windows 批处理文件日/月/年语法?,windows,command-line,batch-file,dos,Windows,Command Line,Batch File,Dos,我找不到用于提取当前日期/月份/年份的批处理文件语法的简单分解 我有以下语法来声明用作目录名的变量 set folder=%date:~10,4%%date:~7,2%%date:~4,2% 有人能解释一下(或发布链接)波浪线,即双倍百分比的含义吗?我似乎无法仅凭直觉完全解释它 和%%s正在拆分字符串(如果您只需在命令中键入date,它将显示完整字符串) %日期:~10,4%表示从第10个字符开始获得接下来的4个字符 还要注意使用不同区域设置的不同PC,因为它们会更改字符串中这些字符的顺序 两

我找不到用于提取当前日期/月份/年份的批处理文件语法的简单分解

我有以下语法来声明用作目录名的变量

set folder=%date:~10,4%%date:~7,2%%date:~4,2%

有人能解释一下(或发布链接)波浪线,即双倍百分比的含义吗?我似乎无法仅凭直觉完全解释它

和%%s正在拆分字符串(如果您只需在命令中键入date,它将显示完整字符串)

%日期:~10,4%表示从第10个字符开始获得接下来的4个字符


还要注意使用不同区域设置的不同PC,因为它们会更改字符串中这些字符的顺序

两倍的百分比意味着什么都没有。这仅仅是两个变量并排展开的结果,例如:

echo %firstname%%lastname%
     \_________/\________/
      Two separate expansions.
波浪线为您提供了一个子字符串。在您的情况下,
%date:~10,4%
date
环境变量的偏移量10处提供四个字符(本例中的年份,因为该格式可能是
2011年12月29日
,偏移量从零开始)

如果在Windows命令提示符下输入
set/?
,它将为您解释所有选项,包括使用负偏移量从字符串末尾提取的巧妙技巧

但是,您应该记住,
date
环境变量格式取决于语言环境,因此这种简单的字符串提取不太可能在所有国际版本的Windows上都有效(这是几年前的一点)

更好的解决方案是使用WMI获取日期组件,如on,为完整起见,请复制到此处:

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!
    )
)

@帕斯迪亚布洛比我先到。这里有一个例子,有很多例子。

你可以看到这篇文章,这里有很多很好的例子:google“windows批处理文件语法”@Fredrik,SO的目标是在你google“windows批处理文件语法”时位于列表的顶部:-@paxdiablo,奇怪的是许多技术搜索字符串通常都是这样:-)