比如在windowscmd命令行窗口執行date命令后這個環境變量的值為
當前日期:2014-09-01 星期六 或2014/09/01 周六
那么如下的各個操作的意義如下:%date:~0,4% 表示從左向右指針向右偏0位,然后從指針偏移到的位置開始提取4位字符,結果是2014(年的值)
%date:~5,2% 表示指針從左向右偏移5位,然后從偏移處開始提取2位字符,結果是03(月的值)
%date:~8,2% 表示指針從左向右偏移8位,然后從偏移處開始提取2位字符,結果是01(日的值)
%date:~5% 表示指針從左向右偏移5位,然后提取所有的值
%date:~-5% 表示指針反方向偏移,從最右端開始,偏移5位,然后從指針處提取左邊的所有數值。
注意:“2014-09-01星期六”是個字符串,在計算機里指針是從0開始計數的,所以這串字符的指針意義上的第5位是0,月份的0,取兩位剛好是03.
同理,比如當前系統的time變量的值如下:
當前時間: 11:36:56.63
那么如下的各個操作的意義如下:%time:~0,2% 表示從左向右指針向右偏0位,然后從指針偏移到的位置開始提取2位字符,結果是小時字段數值
%time:~3,2% 表示指針從左向右偏移3位,然后從偏移處開始提取2位字符,結果是分鍾字段數值
%time:~6,2% 表示指針從左向右偏移6位,然后從偏移處開始提取2位字符,結果是秒字段數值
//創建時間命名的文件夾
當前日期:2014-09-01 星期六 或2014/09/01 周六
那么如下的各個操作的意義如下:%date:~0,4% 表示從左向右指針向右偏0位,然后從指針偏移到的位置開始提取4位字符,結果是2014(年的值)
%date:~5,2% 表示指針從左向右偏移5位,然后從偏移處開始提取2位字符,結果是03(月的值)
%date:~8,2% 表示指針從左向右偏移8位,然后從偏移處開始提取2位字符,結果是01(日的值)
%date:~5% 表示指針從左向右偏移5位,然后提取所有的值
%date:~-5% 表示指針反方向偏移,從最右端開始,偏移5位,然后從指針處提取左邊的所有數值。
注意:“2014-09-01星期六”是個字符串,在計算機里指針是從0開始計數的,所以這串字符的指針意義上的第5位是0,月份的0,取兩位剛好是03.
同理,比如當前系統的time變量的值如下:
當前時間: 11:36:56.63
那么如下的各個操作的意義如下:%time:~0,2% 表示從左向右指針向右偏0位,然后從指針偏移到的位置開始提取2位字符,結果是小時字段數值
%time:~3,2% 表示指針從左向右偏移3位,然后從偏移處開始提取2位字符,結果是分鍾字段數值
%time:~6,2% 表示指針從左向右偏移6位,然后從偏移處開始提取2位字符,結果是秒字段數值
//創建時間命名的文件夾
md d:\%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%
--------分析------------
從set /?中提取的有關幫助:
%PATH:str1=str2%會擴展 PATH 環境變量,用 "str2" 代替擴展結果中的每個 "str1"。要有效地從擴展結果中刪除所有的 "str1","str2" 可以是空的。"str1" 可以以星號打頭;在這種情況下,"str1" 會從擴展結果的開始到 str1 剩余部分第一次出現的地方,都一直保持相配。
也可以為擴展名指定子字符串。
%PATH:~10,5%
會擴展 PATH 環境變量,然后只使用在擴展結果中從第 11 個(偏
移量 10)字符開始的五個字符。如果沒有指定長度,則采用默認
值,即變量數值的余數。如果兩個數字(偏移量和長度)都是負數,
使用的數字則是環境變量數值長度加上指定的偏移量或長度。
%PATH:~-10%
會提取 PATH 變量的最后十個字符。
%PATH:~0,-2%
會提取 PATH 變量的所有字符,除了最后兩個。
從set /?中提取的有關幫助:
%PATH:str1=str2%會擴展 PATH 環境變量,用 "str2" 代替擴展結果中的每個 "str1"。要有效地從擴展結果中刪除所有的 "str1","str2" 可以是空的。"str1" 可以以星號打頭;在這種情況下,"str1" 會從擴展結果的開始到 str1 剩余部分第一次出現的地方,都一直保持相配。
也可以為擴展名指定子字符串。
%PATH:~10,5%
會擴展 PATH 環境變量,然后只使用在擴展結果中從第 11 個(偏
移量 10)字符開始的五個字符。如果沒有指定長度,則采用默認
值,即變量數值的余數。如果兩個數字(偏移量和長度)都是負數,
使用的數字則是環境變量數值長度加上指定的偏移量或長度。
%PATH:~-10%
會提取 PATH 變量的最后十個字符。
%PATH:~0,-2%
會提取 PATH 變量的所有字符,除了最后兩個。
----------------------------------
用%time:~0,2%%time:~3,2%%time:~6,2%時有個問題, 就是如果TIME 是00點的時候,電腦顯示的是0 不是00所以TIME 0~2 就報錯了。
例子:時間9:42:17
set fileDate=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
for /f "tokens=1,2 delims=:" %%i in ('time/t') do set t=%%i%%j
set fileDate2=%date:~0,4%%date:~5,2%%date:~8,2%%t:~0,4%%time:~6,2%
echo fileDate:%fileDate%
echo fileDate2:%fileDate2%
fileDate:20150112 94217(9前面是空格)
fileDate2:20150112094217
還有些設備的date顯示是12/12/2015 周一
所以用以下方法格式化
set date=%date:~0,10%
set date=%date:-=% //去掉日期中的-
set date=%date:/=% //去掉日期中的/
set time=%time:~0,8%
set time=%time::=% //去掉時間中的:
if "%time:~0,1%"==" " set "time=0%time:~1%"
---------------------
作者:icanlove
來源:CSDN
原文:https://blog.csdn.net/icanlove/article/details/42640329
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
用%time:~0,2%%time:~3,2%%time:~6,2%時有個問題, 就是如果TIME 是00點的時候,電腦顯示的是0 不是00所以TIME 0~2 就報錯了。
例子:時間9:42:17
set fileDate=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
for /f "tokens=1,2 delims=:" %%i in ('time/t') do set t=%%i%%j
set fileDate2=%date:~0,4%%date:~5,2%%date:~8,2%%t:~0,4%%time:~6,2%
echo fileDate:%fileDate%
echo fileDate2:%fileDate2%
fileDate:20150112 94217(9前面是空格)
fileDate2:20150112094217
還有些設備的date顯示是12/12/2015 周一
所以用以下方法格式化
set date=%date:~0,10%
set date=%date:-=% //去掉日期中的-
set date=%date:/=% //去掉日期中的/
set time=%time:~0,8%
set time=%time::=% //去掉時間中的:
if "%time:~0,1%"==" " set "time=0%time:~1%"
---------------------
作者:icanlove
來源:CSDN
原文:https://blog.csdn.net/icanlove/article/details/42640329
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!