如何在批处理文件中按日期时间创建文件夹

Posted

技术标签:

【中文标题】如何在批处理文件中按日期时间创建文件夹【英文标题】:How to create folder by Date time in batch file 【发布时间】:2021-05-24 08:52:06 【问题描述】:

我正在尝试使用以下代码在我的批处理文件中按日期时间创建一个文件夹

@echo off & for /F "tokens=1-4 delims=/ " %%A in ('date/t') do (
 set DateDay=%%A
 set DateMonth=%%B
 set Date=%%C
set DateYear=%%D
)
@echo off & for /F "tokens=1-4 delims=/ " %%D in ('time/t') do (
set DateTime=%%D
)
set CurrentDate=%Date%-%DateMonth%-%DateYear%-0%time:~0,2%.%time:~3,2%.%time:~6,2%
mkdir %CurrentDate%

使用这个我得到文件夹名称为 22-02-2021-010.01.37 但是如果时间是在 1 到 9 小时,我的文件夹会显示为22-02-2021-0 9.59.19 在 0 和 9 中总是有一个空格,而 1 到 9 小时不会显示为 01,02,03 小时

答案应该是:

22-02-2021-009.59.19

【问题讨论】:

这对于根据需要获取日期时间可能很有用。 ***.com/a/203116/9087250 【参考方案1】:

最好和正确的方法是使用独立于区域day/month 顺序的日期,您可以使用"WMIC os GET LocalDateTime" 作为来源,因为它是ISO 顺序:


@echo off
Title Get FileName With Date and Time
Call :GetFileNameWithDateTime MyCurrentDate
echo %MyCurrentDate%
MkDir %MyCurrentDate%
pause & exit
::----------------------------------------------------------------------------------
:GetFileNameWithDateTime <FileName>
for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined MyDate set "MyDate=%%x"
set "%1=%MyDate:~0,4%-%MyDate:~4,2%-%MyDate:~6,2%-%MyDate:~8,2%-%MyDate:~10,2%"
Exit /B
::----------------------------------------------------------------------------------

【讨论】:

我还希望文件夹中出现秒数。【参考方案2】:
set "CurrentDate=%Date%-%DateMonth%-%DateYear%-0%time:~0,2%.%time:~3,2%.%time:~6,2%"
set "CurrentDate=%currentDate: =0%"
mkdir %CurrentDate%

0 替换 中的currentdate

提示:使用set "var1=data" 设置值 - 这可以避免尾随空格引起的问题。在比较中,使用if "thing1" == "thing2" ... 可以避免thing1/2 中的空格引起的问题。

【讨论】:

【参考方案3】:

如果您想要在任何现代系统上运行的东西,并且仍然以您的特定格式/顺序输出目录名称,而不管用户或区域设置如何,那么......

您可以通过batch-file 这样做:

@For /F "Tokens=1-6 Delims=/: " %%G In ('%SystemRoot%\System32\Robocopy.exe \: . /NJH /L ^| %SystemRoot%\System32\find.exe " 123"') Do @MD "%%I-%%H-%%G-0%%J.%%K.%%L"

或直接从Windows command-line、cmd.exe:

For /F "Tokens=1-6 Delims=/: " %G In ('%SystemRoot%\System32\Robocopy.exe \: . /NJH /L ^| %SystemRoot%\System32\find.exe " 123"') Do @MD %I-%H-%G-0%J.%K.%L

【讨论】:

以上是关于如何在批处理文件中按日期时间创建文件夹的主要内容,如果未能解决你的问题,请参考以下文章

请教批处理大虾,如何将一堆不同时期拍摄的照片按修改日期自动创建文件夹进行归档?

Windows批处理:如何读取文件中的日期和时间并将其与当前日期和时间进行比较

如何用批处理命令创建一个以“日期”+读取粘贴板数据命名的文件夹?

在 Windows 批处理中使用创建日期和时间重命名文件

在 FAR 管理器中按日期对文件进行排序

如何查找上周日的日期并将其保存在Windows批处理文件的变量中