使用批处理文件将文件名转换为变量

时间:2017-08-30 18:58:20

标签: batch-file

我有一个批处理文件,需要每天对特定文件执行操作。到目前为止,文件名已遵循模式EX_2017-08-30.DAT,这意味着我可以使用以下内容来获取当天的确切文件名:

set today=%date:~-4,4%-%date:~-10,2%-%date:~-7,2%
set filename=EZ_%today%.DAT

现在我被告知文件名将更改为包含时间戳,例如EX_2017-08-30-231859.DAT。但是,确切的时间事先不会被知道(当某个过程完成时它会被设置)。

我无法在整个批处理文件中使用通配符,因为文件名正被写入外部文件以供其他应用程序使用,因此我必须知道确切的文件名。反正我是否可以使用通配符进行搜索并将生成的完整文件名存储到变量中?

1 个答案:

答案 0 :(得分:1)

如果您可以列出EX_ *文件所在目录中的文件,您可以执行以下操作:

for %%i in (EX_%today%-*.DAT) do (
    set filename=%%i
)

第一行列出了与日期和扩展名匹配的目录中的所有文件,然后将最后一个文件设置为filename变量。请注意,如果有多个文件与表达式匹配,则不会发出任何警告。

如果您无法列出目录,那么您唯一的机会就是暴力破解。文件名只有24 * 60 * 60的可能性,如果你及时倒退,你应该只需几万次迭代即可到达所需的文件,前提是任务通常在午夜时分完成。