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 - 指在文件開始時忽略的行數(shù)。 delims=xxx - 指分隔符集。這個替換了空格和跳格鍵的//指定分割的字符列入delims=;:.使用了";",":","."做分隔 默認分隔符集。 tokens=x,y,m-n - 指每行的哪一個符號被傳遞到每個迭代 的 for 本身。這會導致額外變量名稱的分配。m-n 格式為一個范圍。通過 nth 符號指定 mth。如果 符號字符串中的最后一個字符星號, 那么額外的變量將在最后一個符號解析之后 分配并接受行的保留文本。 usebackq - 指定新語法已在下類情況中使用: 在作為命令執(zhí)行一個后引號的字符串并且一個單 引號字符為文字字符串命令并允許在 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% 這種方法比較靈活。