gpt4 book ai didi

windows - 在批处理脚本中生成带有时间戳的唯一文件名

转载 作者:可可西里 更新时间:2023-11-01 12:03:50 26 4
gpt4 key购买 nike

在我的 .bat 文件中,我想根据日期时间为文件/目录生成一个唯一的名称。

例如

Build-2009-10-29-10-59-00

问题是 %TIME% 不会执行,因为它包含文件名中的非法字符(例如 :)。

有没有类似tr的东西在批处理文件中?

关于如何解决此问题的任何其他想法(除了批处理解释器之外不需要额外的命令行实用程序)?

最佳答案

编辑:一个更好的方法是采用具有已定义且不变格式的日期/时间字符串,而不是使用来自 %date%% 的区域设置定义的字符串时间%。您可以使用以下方法获取它:

for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined mydate set mydate=%%x

它会产生类似于 20120730203126.530000+120 的结果,您可以使用它来构建文件名。


(下面是旧答案)

您可以简单地将有问题的字符替换为空字符串:

echo %time::=%

语法 %var:str1=str2% 采用环境变量(或者在 %TIME% 的情况下为伪变量并替换 str1 by str2。如果等号后没有任何内容,则简单地删除 str1

在您的具体情况下,我认为您需要以下内容:

rem cut off fractional seconds
set t=%time:~0,8%
rem replace colons with dashes
set t=%t::=-%
set FileName=Build-%date%-%t%

如果您不知道是否使用了冒号(但时间顺序是相同的),则采用更暴力的方式:

set FileName=Build-%date%-%time:~0,2%-%time:~3,2%-%time:~6,2%

然而,所有前面的事情都假设您使用标准的 ISO 8601 日期格式,即。 e. 2009-10-29。我认为这很正常,但有些人使用其他格式,所以要小心。但由于您没有询问日期,我假设您在那里没有问题。

关于windows - 在批处理脚本中生成带有时间戳的唯一文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1642677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com