2.用for语句分断截取,似乎好点 先看看for的用法: FOR /F ["options"] %variable IN (file-set) DO command [command-parameters] FOR /F ["options"] %variable IN ("string") DO command [command-parameters] FOR /F ["options"] %variable IN ('command') DO command [command-parameters] optinos eol=c - 指一个行注释字符的结尾(就一个)//要忽略以什么字符开头的行 skip=n - 指在文件开始时忽略的行数。 delims=xxx - 指分隔符集。这个替换了空格和跳格键的//指定分割的字符列入delims=;:.使用了";",":","."做分隔 默认分隔符集。 tokens=x,y,m-n - 指每行的哪一个符号被传递到每个迭代 的 for 本身。这会导致额外变量名称的分配。m-n 格式为一个范围。通过 nth 符号指定 mth。如果 符号字符串中的最后一个字符星号, 那么额外的变量将在最后一个符号解析之后 分配并接受行的保留文本。 usebackq - 指定新语法已在下类情况中使用: 在作为命令执行一个后引号的字符串并且一个单 引号字符为文字字符串命令并允许在 filenameset 中使用双引号扩起文件名称。 参照这个用法,我们可以对日期字符串进行格式化输出: 因为日期结果是:2012-03-31 星期六 因为分隔字符是'-'还有空格' ',所以取3段出来,如: c:\&;for /f "tokens=1-3 delims=- " %1 in ("%date%") do @echo %1%2%3 20120331 www.jb51.net 再看时间: c:\&;echo %time% 6:59:20.38 c:\&;for /f "tokens=1-3 delims=.: " %1 in ("%time%") do @echo %1%2%3 65939 两者一结合起来可以这样用:
c:\&;for /f "tokens=1-3 delims=- " %1 in ("%date%") do set ttt=%1%2%3 c:\&;set ttt=20120331 c:\&;for /f "tokens=1-3 delims=.: " %1 in ("%time%") do set ttt=%ttt%-%1%2%3 c:\&;set ttt=20120331-70131 写成批处理,就变成这样(goodtime.bat): for /f "tokens=1-3 delims=- " %%1 in ("%date%") do set ttt=%%1%%2%%3 for /f "tokens=1-3 delims=.: " %%1 in ("%time%") do set ttt=%ttt%-%%1%%2%%3 echo goodtime=%ttt% 这种方法比较灵活。