本节内容:
DOS批处理格式化日期字符串
首先,来看linux操作系统下,日期格式化的方法,比较简单。
例如:date '+%Y%m%d-%H%M%S'就可以得到你要的输出:20120331-064219
换在windows系统下,就相对复杂一些了。
1,直接用字符串格式化输出
比如,如果机器上时间的输出:
那么,要想得到输出20120331- 64402,可以这样截取字符串:
表示取从0位置开始4个字符等等。这个方法不能截断空格。
2,用for语句分断截取
for的用法:
optinos
eol=c - 指一个行注释字符的结尾(就一个)//要忽略以什么字符开头的行
skip=n - 指在文件开始时忽略的行数。
delims=xxx - 指分隔符集。这个替换了空格和跳格键的//指定分割的字符列入delims=;:.使用了";",":","."做分隔
默认分隔符集。
tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代
的 for 本身。这会导致额外变量名称的分配。m-n
格式为一个范围。通过 nth 符号指定 mth。如果
符号字符串中的最后一个字符星号,
那么额外的变量将在最后一个符号解析之后
分配并接受行的保留文本。
usebackq - 指定新语法已在下类情况中使用:
在作为命令执行一个后引号的字符串并且一个单
引号字符为文字字符串命令并允许在 filenameset
中使用双引号扩起文件名称。
参照这个用法,我们可以对日期字符串进行格式化输出:
因为日期结果是:2012-03-31 星期六
因为分隔字符是'-'还有空格' ',所以取3段出来,如:
再看时间:
两者结合起来:
使用批处理脚本来完成,可以这样(goodtime.bat):
这种方法比较灵活。
3,最后一种方法,使用VBScript来定制输出:
输出结果:
更为理想的方法,可以写个批处理,把结果弄到环境变量当中:
mydate2.bat,内容如下:
总结:第3种方法最复杂,目前还不能断定是否在所有windows平台都能正确运行,但是结果应该是固定的。
不随着date,time格式变动而变动。但是1和2会依赖于日期时间的格式。
还是linux下比较固定,linux是个迷人的系统,就像一个贵妇,爱上她,让你欲罢不能,哈哈。