当我使用 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.
当我使用 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.