虽然Windows有了Windows Terminal和PowerShell等脚本工具,但批次档在简单的需求状况下还是很方便的选择。
系统日期在產生备份档等场合很常用,本文介绍批次档裡取得系统日期的方法。
DATE环境变量
系统日期可由DATE环境变量取得,在DATE前后加上 % 即可取出其值:
d:\>echo %DATE%
2019/12/15DATE的值受日期格式设定而有不同,可能是2019/1/2或2019/01/02等值,為了方便取成固定格式,最好把日期格式改成不足10的数字左补零的格式。以下指令皆预设日期格式固定為YYYY/MM/DD,长度為10个字元。
变更日期与时间格式必须透过控制台来修改,或使用下列批次档直接变更登录的值:
▼ date-fmt.bat
@echo Windows Registry Editor Version 5.00 > date-fmt.reg
@echo.>> date-fmt.reg
@echo [HKEY_CURRENT_USER\Control Panel\International]>> date-fmt.reg
@echo "s1159"="上午">> date-fmt.reg
@echo "s2359"="下午">> date-fmt.reg
@echo "sLongDate"="yyyy'年'MM'月'dd'日'">> date-fmt.reg
@echo "sShortDate"="yyyy/MM/dd">> date-fmt.reg
@echo "sTime"=":">> date-fmt.reg
@echo "sTimeFormat"="HH:mm:ss">> date-fmt.reg
@echo "sShortTime"="HH:mm">> date-fmt.reg
@echo "sYearMonth"="yyyy'年'M'月'">> date-fmt.reg
@echo.
regedit date-fmt.reg取出年、月、日
环境变量有下列几种字串替换的操作:
- 取代:用冒号和等号
- 格式:环境变量:字串1=字串2
- 功能:把环境变量值的[字串1]替换成[字串2]
▼ 把日期的斜线换成星号
echo %DATE:/=*%
2019*12*15▼ 把日期的斜线都删掉
echo %DATE:/=%
20191215通常我们都会拿YYYYMMDD这样的日期来用,因為Windows命令的参数选项都是以 / 来指定的,因此最好不用使用带有斜线的参数。
- 取子字串:用 ~ 和 ,
- 格式:
- 环境变量:~开始位置[,长度]
- 开始位置由 0 起算 (Zero-based)
- 开始位置若為负值,表示由结尾向前
- 功能:环境变量的子字串操作
▼ 取日期变量的系统日(最后两个字元)
echo %DATE:~-2%
15备份档是1至31日循环时,就能使用日数的方法。例如:
set DAY=%DATE:~-2%
"c:\Program Files\7-zip\7z.exe" a s:\backup\data-%DAY%.7z d:\backup\*.dat另外,如何求出昨天或明天的日数呢?环境变量要运算只要使用set /A 即可。
set TODAY=%DATE:~-2%
set /A PREVDAY=%TODAY%-1
set /A NEXTDAY=%TODAY%+1
echo %PREVDAY%
14
echo %NEXTDAY%
16▼ 取出月份(由第6个字元开始取2个字元)
echo %DATE:~5,2%
12▼ 取出年度
echo %DATE:~0,4%
2019解说視頻
##
