Windows 批处理文件 ren 使用日期变量

Windows batch file ren using date variable

前阵子在学校学过batch,到现在还没用过b/c灵机一动。只是为了好玩,我想用我的新笔记本电脑弄乱 powercfg batteryreport,但我想存档。我打算尝试弄清楚如何让文件 powercfg batteryreport 吐出以某种数字顺序更改,但我什至不知道从哪里开始,所以我决定只创建一个新行来获取当前创建的文件并添加日期。所有这些都发生在我创建的一个特殊文件夹中,因此不需要路径。

    @echo off
    powercfg batteryreport
    rename "battery-report.html" "batteryreport %date%.html"

这个确切的脚本在没有日期变量的情况下工作,但从来没有用过它,但当然我需要一个变量来保存多个报告,而不是每次都重写它自己。我试过弄乱所有间距,引号与不引号,没有运气。帮助(或更好的方法,最好有解释)将不胜感激。

很有可能,您的 date 格式包含 /,这在文件名中是非法的。

使用 %date:/=-% 代替 %date%。这会将每个 / 转换为 -(请参阅 docco 提示中的 set /?

同样,您可以使用 %time::=.% o 将时间转换为可在文件名中使用的版本。


要删除dayname,您需要使用一个中间变量:

set "dateonly=%date:* =%"
ren ... "...%dateonly:/=-%..."

* 的意思是 "all of the characters up to and including the first space",这被替换为 nothing= 之后的字符串)

有关详细信息,请参阅提示中的 set /?