返回

Windows 批处理中为批处理作业中的文件名创建时间戳

windows

为批处理作业中的文件名创建时间戳

在 Windows 批处理中

在 Windows 批处理中,你可以使用 copy 命令为文件创建带有时间戳的文件名。语法如下:

copy source.log %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%.log

此命令将复制文件 source.log 并为新文件创建带有日期的时间戳的文件名。例如,如果当前日期为 2023 年 3 月 8 日,新文件名将为:

2023-03-08.log

命令分解

  • %DATE% 环境变量包含当前日期,格式为 YYYY-MM-DD
  • :~0,4 提取字符串 %DATE% 中的前 4 个字符,即年。
  • :~5,2 提取字符串 %DATE% 中的第 5 到第 6 个字符,即月。
  • :~8,2 提取字符串 %DATE% 中的第 8 到第 9 个字符,即日。
  • . 用作文件名的扩展名分隔符。

示例脚本

以下是一个示例批处理脚本,它使用上述命令为名为 source.log 的文件创建带有时间戳的文件名:

@echo off
copy source.log %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%.log

运行此脚本将创建一个名为 2023-03-08.log 的新文件,其中包含 source.log 文件的内容。

常见问题解答

Q1:我可以使用其他日期格式吗?

A1:可以,只需相应地调整 :~ 参数。例如,以下命令将创建带有 DD-MM-YYYY 格式的时间戳的文件名:

copy source.log %DATE:~8,2%-%DATE:~5,2%-%DATE:~0,4%.log

Q2:如何使用不同的扩展名?

A2:只需在命令中更改 .log 部分即可。例如,以下命令将创建带有 .txt 扩展名的文件:

copy source.log %DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%.txt

Q3:我可以给文件一个自定义前缀吗?

A3:可以,只需在命令中添加一个前缀字符串。例如,以下命令将创建一个以 backup- 开头的时间戳文件:

copy source.log backup-%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%.log

Q4:我可以使用 for 循环为多个文件创建时间戳文件吗?

A4:可以,使用以下语法:

for %%f in (*.log) do copy %%f %%~nf-%DATE:~0,4%-%DATE:~5,2%-%DATE:~8,2%.log

Q5:如何在 Linux 批处理中创建带有时间戳的文件名?

A5:在 Linux 批处理中,你可以使用 date 命令和 mv 命令,语法如下:

mv source.log "$(date +%Y-%m-%d).log"