【问题标题】:Can I create a folder with current datetime when I use Windows Command-line FTP我可以在使用 Windows 命令行 FTP 时创建具有当前日期时间的文件夹吗
【发布时间】:2015-06-18 19:54:48
【问题描述】:

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

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

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

ftpMyFiles.txt 里面我有:

open 127.0.0.1
user
pass
mkdir %DATE%
bye

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

【问题讨论】:

    标签: windows batch-file command-line cmd ftp


    【解决方案1】:

    我更喜欢使用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
    

    感谢 AnertyJay 对不久前帮助我的类似问题的回答,here

    【讨论】:

      【解决方案2】:

      您必须像这样动态生成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

      【讨论】:

        猜你喜欢
        • 2013-02-09
        • 1970-01-01
        • 1970-01-01
        • 2021-08-21
        • 2014-03-16
        • 1970-01-01
        • 2018-03-24
        • 1970-01-01
        • 2011-01-06
        相关资源
        最近更新 更多