当我使用 Windows 命令行 FTP 时,我可以创建一个包含当前日期时间的文件夹吗

Can I create a folder with current datetime when I use Windows Command-line FTP

当我使用 Windows 命令行 FTP 时,是否可以使用当前日期时间创建一个新目录?

如果我有 运行 的调度程序,请进一步说明:

C:\windows\system32\ftp -s:ftpMyFiles.txt

ftpMyFiles.txt里面我有:

open 127.0.0.1
user
pass
mkdir %DATE%
bye

问题是我可以在此处创建一个带有日期时间的新目录 (mkdir %DATE%) 吗?

您必须像这样动态生成 ftpMyFiles.txt

(
    echo open 127.0.0.1
    echo user
    echo pass
    echo mkdir %DATE%
    echo bye
) > ftpMyFiles.txt

C:\windows\system32\ftp -s:ftpMyFiles.txt

请注意,%DATE% 的值是特定于语言环境的。因此,请确保您在与实际 运行 相同的语言环境中测试您的批处理文件。否则你可能会得到意想不到的结果。例如,在我的(捷克)语言环境中 DATE=po 13. 04. 2015

我更喜欢使用 ISO 8601 日期格式(有时不带连字符),因为这样可以更轻松地按日期排序文件(只需按文件夹名称的字母顺序排序)。通常,我发现带连字符的 ISO 8601 日期比不带连字符的 ose 更容易阅读,但您的要求可能会有所不同。

此外,ISO 8601 避免了 across 池塘中日月交替的愚蠢行为 - 这让我们这些使用国际标准的人感到困惑os。

most 使用的 ISO 8601 格式通常是 YYYY-MM-DD 或 YYYYMMDD(例如,今天的日期为 2016-02-24 或 20150224)。

使用 wmic os 获取 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

Kudos 到 Anerty and Jay for their answer to a similar question that helped me a little while back, here.