如何在Windows批处理脚本中创建带有日期时间的文件名

时间:2019-05-19 01:25:48  来源:igfitidea点击:

本教程将在Windows系统上创建名为当前日期时间的文件和目录。
例如,我们正在编写定期创建备份的脚本,现在我们希望使用当前日期和时间名称组织日常备份,以便更容易识别哪个文件夹包含哪个日期的备份。

在批处理脚本中获取日期和时间

Windows以 Thu 11/02/2017这样的格式接收日期。
下面3组命令分别提取YYYY格式的日期、MM格式的月、DD格式的日期,并分别存储在 CUR_YYYYCUR_MMCUR_DD变量中。

set CUR_YYYY=%date:~10,4%
set CUR_MM=%date:~4,2%
set CUR_DD=%date:~7,2%

接下来是解析可用 11:20:56.39(小时、分钟、秒和微秒)格式的时间。
现在提取小时、分钟、秒和微秒并将它们存储在变量中。

set CUR_HH=%time:~0,2%
if %CUR_HH% lss 10 (set CUR_HH=0%time:~1,1%)

set CUR_NN=%time:~3,2%
set CUR_SS=%time:~6,2%
set CUR_MS=%time:~9,2%

现在,变量中有了当前日期和时间。
我们可以使用和创建任何文件名,根据要求,如:

set SUBFILENAME=%CUR_YYYY%%CUR_MM%%CUR_DD%-%CUR_HH%%CUR_NN%%CUR_SS%
mkdir %SUBFILENAME%
echo "Welcome Here!" > access_%SUBFILENAME%.log

如果我们当前的日期时间是 Nov 02, 2017 15:41:36,那么上面的例子将在当前目录中创建一个名为“access_20170306-143822.log”的文件。

一个带有日期和时间的样例批处理脚本

完整的windows批处理脚本如下所示。
要对此进行测试,请创建一个包含以下内容的test.bat文件。
保存文件并执行脚本。

echo off
set CUR_YYYY=%date:~10,4%
set CUR_MM=%date:~4,2%
set CUR_DD=%date:~7,2%
set CUR_HH=%time:~0,2%
if %CUR_HH% lss 10 (set CUR_HH=0%time:~1,1%)

set CUR_NN=%time:~3,2%
set CUR_SS=%time:~6,2%
set CUR_MS=%time:~9,2%

set SUBFILENAME=%CUR_YYYY%%CUR_MM%%CUR_DD%-%CUR_HH%%CUR_NN%%CUR_SS%
mkdir %SUBFILENAME%
echo "Welcome Here!" > access_%SUBFILENAME%.log

我们将看到创建了一个目录,名称为20171102-154136,并在当前目录中创建了一个文件,名称为access_20171102-154136.log(文件名将根据当前日期和时间,并将在测试期间更改)