以前并不知道还可以有这样的用法:
C:\>echo %date%
2005-05-10 星期二
![]()
C:\>echo %date:~0,4%
2005
![]()
C:\>echo %date:~11%
星期二
![]()
C:\>echo %date:~-3%
星期二
![]()
C:\>echo %date:~-3,-1%
星期
用于在批处理文件中生成每天一个(或每月、每年一个)日志文件,这是最直接的做法。比套用vbscript等其他方法来得简洁。这个方法的缺点是%date%的值在不同的系统、不同的语言版本下都是不一样的,Control Panel里面Regional and Language Options设定也会改变%date%的值。
打印 | 张贴于 2005-05-10 21:28:00 | Tag:Cool Stuffs


留言反馈
从这里学到了很多,也把自己昨天刚研究出来的东西共享一下,希望其他人不要像我熬到凌晨才把它弄出来。
我要遇到的问题就是要在不同的系统,不同的语言版本里获得系统的当前时间,并付给一个变量。
@echo off
rem ---------------------------------------------------------------
rem Get the system current date with the same format YYYY/MM//DD
rem with different local settings
rem ---------------------------------------------------------------
FOR /F "TOKENS=2* DELIMS= " %%A IN ('REG QUERY "HKEY_CURRENT_USER\Control Panel\International\iDate"') DO SET iDate=%%B
FOR /F "TOKENS=2* DELIMS= " %%A IN ('REG QUERY "HKEY_CURRENT_USER\Control Panel\International\sDate"') DO SET sDate=%%B
IF %iDate%==0 FOR /F "TOKENS=1-4* DELIMS=%sDate% " %%A IN ('DATE/T') DO set date=%%C/%%A/%%B
IF %iDate%==1 FOR /F "TOKENS=1-4* DELIMS=%sDate% " %%A IN ('DATE/T') DO set date=%%C/%%B/%%A
IF %iDate%==2 FOR /F "TOKENS=1-4* DELIMS=%sDate% " %%A IN ('DATE/T') DO set date=%%A/%%B/%%C
echo %date%
这里要注意有的系统REG.EXE的版本不一样,我用的是Platform Builder 里的。
for /f "tokens=1,2,3 delims=- " %a in ("date /t") in ("date /t") do @echo "%a-%b-%c"
可以取当前的日期前几天,要定时备份一个目录,就在研究批处理文件,当时的想法,是想自动备份的目录下取当前的日期来备份,终于在网上找到1段程序:
for /f "tokens=1,2,3 delims=- " %a in ("date /t") in ("date /t") do @echo "%a-%b-%c"
可以取当前的日期前几天,要定时备份一个目录,就在研究批处理文件,当时的想法,是想自动备份的目录下取当前的日期来备份,终于在网上找到1段程序:
for /f "tokens=1,2,3 delims=- " %a in ("date /t") in ("date /t") do @echo "%a-%b-%c"
可以取当前的日期
for /f "tokens=1,2,3 delims=- " %a in ("date /t") in ("date /t") do @echo "%a-%b-%c"
可以取当前的日期前几天,要定时备份一个目录,就在研究批处理文件,当时的想法,是想自动备份的目录下取当前的日期来备份,终于在网上找到1段程序:
for /f "tokens=1,2,3 delims=- " %a in ("date /t") in ("date /t") do @echo "%a-%b-%c"
可以取当前的日期
rar.exe a -m1 %date:~0,10%\www.rar d:\www\
以后每次备份可以自动运行了!
谢谢!
for /f "tokens=1,2,3 delims=- " %a in ("date /t") in ("date /t") do @echo "%a-%b-%c"
可以取当前的日期
挺好玩的
^^