D:\> set "today=%date:~10,4%-%date:~7,2%-%date:~4,2%"
D:\> mkdir SVN_BACKUP_DUMP_TEST\%today%
D:\> CD SVN_BACKUP_DUMP_TEST\%today%
当我们制作bat文件时,此命令不起作用
答案 0 :(得分:0)
引用环境变量DATE
的日期格式取决于区域设置,即哪个国家/地区以及从国家/地区派生的当前帐户的日期格式。那么将哪个字符串分配给环境变量today
,如果该字符串对目录或文件名有效,则取决于帐户特定的日期格式。
在我的计算机上将德语设为国家/地区,echo %DATE%
的帐户输出为13.11.2017
。所以日期格式为DD.MM.YYYY
,点为分隔符,没有工作日,日期和月份总是两位数,即使是小于10的日期或月份。
命令行
echo %DATE:~10,4%-%DATE:~7,2%-%DATE:~4,2%
在我的机器上使用我的帐户和我的区域设置生成输出:
-01-1.
这绝对不是YYYY-MM-DD
格式的当前日期。
解决方案使用以下批处理代码:
@echo off
for /F "tokens=2 delims==." %%I in ('%SystemRoot%\System32\wbem\wmic.exe OS GET LocalDateTime /VALUE') do set "Today=%%I"
set "Today=%Today:~0,4%-%Today:~4,2%-%Today:~6,2%"
mkdir "SVN_BACKUP_DUMP_TEST\%Today%" 2>nul
cd "SVN_BACKUP_DUMP_TEST\%Today%"
这是一个独立于地区的解决方案。批次代码在回答中完整解释 %date% produces different result in batch file when run from Scheduled Tasks in Server 2016
另请参阅What does %date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2% mean?上的答案并在命令提示符窗口set /?
中运行,以显示命令 SET 解释字符串替换的帮助。