批处理文件(Batch File)里使用当前时间

一直使用批处理文件备份文件,以前使用RAR压缩的时候,可以使用-ag参数,以当前日期与时间生成压缩文件名,但换用7z以后,没有这个功能,每次备份完之后都要手工修改文件名,很不方便。现在从http://blog.joycode.com/mvm/archive/2005/05/10/50624.aspx找到了在批处理文件中根据当前时间生成一个变量,然后截取它的一个子字符串的方法,然后就可以在命令中使用这个变量了。

批处理中可以用%date%调用当前时间,但%date:~0,4%则可以生成当前时间(转换成字符串以后)从第0位起取4个字符的子字符串,第一位从0计。其中0、4位置的数字还可以是负值,应该是代表了从字符串末尾、向前取字符。现在我的批处理中可以使用如下命令了:

7za a backup.%date:~0,4%%date:~5,2%%date:~8,2%.7z -r * -ms=off -mmt=on

这样就能每天生成一个名如backup.20050630.7z的文件了。

有人还说,利用下面的命令也可以取出当前时间,试了一下,是可以echo出来,但如何加以利用就不知道了。

for /f "tokens=1,2,3 delims=- " %a in (‘date /t’) do @echo "%a-%b-%c"

上面这个命令中,date /t必须用单引号包含,双引号不行。

不知道这样取substring的方法对其它变量是否适用。

Leave a Reply

Your email address will not be published. Required fields are marked *