我更喜欢使用ISO 8601 日期格式(有时减去连字符),因为这样可以更轻松地按日期排序文件(只需按文件夹名称的字母顺序排序)。一般来说,我发现带连字符的 ISO 8601 日期比不带连字符的日期更容易阅读,但您的要求可能会有所不同。
此外,ISO 8601 避免了在天和月交替的情况下的愚蠢 - 这让我们这些使用国际标准的人感到困惑。
最常用的 ISO 8601 格式是 YYYY-MM-DD 或 YYYYMMDD(例如,今天的日期为 2016-02-24 或 20150224)。
使用 wmic os get LocalDateTime,您可以从操作系统获取非特定于语言环境的日期时间,然后将其转换为 ISO 8601 格式,如下所示:
@echo off
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set ldtime=%ldt:~0,4%-%ldt:~4,2%-%ldt:~6,2% %ldt:~8,2%:%ldt:~10,2%:%ldt:~12,6%
set ldate=%ldt:~0,4%-%ldt:~4,2%-%ldt:~6,2%
set ldatestraight=%ldt:~0,8%
echo Local datetime is [%ldtime%]
echo Local date is [%ldate%]
echo Local date no hyphens is [%ldatestraight%]
echo .
echo Raw datetime is [%ldt%]
pause
因此,将Martin Prikryl 的示例代码更进一步,您可以执行以下操作(对于带有连字符的 ISO 8601 日期):
(
echo open 127.0.0.1
echo user
echo pass
for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j
set ldate=%ldt:~0,4%-%ldt:~4,2%-%ldt:~6,2%
echo mkdir %ldate%
echo bye
) > ftpMyFiles.txt
C:\windows\system32\ftp -s:ftpMyFiles.txt
感谢 Anerty 和 Jay 对不久前帮助我的类似问题的回答,here。