windows批處理bat腳本獲取并且處理當(dāng)前日期與時(shí)間信息
操作系統(tǒng)不同,日期格式也可能不同:
星期二 2008-07-29
2008-07-29 星期二
07/29/2008 Tue
Tue 07/29/2008
再考慮到中、英之外的其它語言的操作系統(tǒng),日期格式的種類實(shí)在太多了。
要想標(biāo)準(zhǔn)化地獲取當(dāng)前系統(tǒng)日期2008-07-28,直接截取%date%變量的方法是不行的。
一、%date:~0,4%和 %time:~0,2%字符截取操作用法
比如在windows cmd命令行窗口執(zhí)行date命令后這個(gè)環(huán)境變量的值為
那么如下的各個(gè)操作的意義如下:
%date:~0,4% 表示從左向右指針向右偏0位,然后從指針偏移到的位置開始提取4位字符,結(jié)果是2024(年的值)
%date:~5,2% 表示指針從左向右偏移5位,然后從偏移處開始提取2位字符,結(jié)果是05(月的值)
%date:~8,2% 表示指針從左向右偏移8位,然后從偏移處開始提取2位字符,結(jié)果是19(日的值)
%date:~5% 表示指針從左向右偏移5位,然后提取所有的值
%date:~-5% 表示指針反方向偏移,從最右端開始,偏移5位,然后從指針處提取左邊的所有數(shù)值。
注意:“2024-05-19 周日”是個(gè)字符串,在計(jì)算機(jī)里指針是從0開始計(jì)數(shù)的,所以這串字符的指針意義上的第5位是0,月份的0,取兩位剛好是05.
同理,比如當(dāng)前系統(tǒng)的time變量的值如下:
那么如下的各個(gè)操作的意義如下:
%time:~0,2% 表示從左向右指針向右偏0位,然后從指針偏移到的位置開始提取2位字符,結(jié)果是小時(shí)字段數(shù)值
%time:~3,2% 表示指針從左向右偏移3位,然后從偏移處開始提取2位字符,結(jié)果是分鐘字段數(shù)值
%time:~6,2% 表示指針從左向右偏移6位,然后從偏移處開始提取2位字符,結(jié)果是秒字段數(shù)值
實(shí)戰(zhàn)操作:
md d:\%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%
注:md是創(chuàng)建目錄的意思
執(zhí)行后D盤根目錄多了一個(gè)文件夾
這樣就可以了。
二、如何獲取當(dāng)前日期時(shí)間信息
其實(shí)很簡單,看示例
::demo.bat @echo off echo date=%date% echo time=%time% pause
三、如何將當(dāng)前日期時(shí)間信息格式化為字符串
其實(shí)獲取到的當(dāng)前日期時(shí)間信息已經(jīng)是字符串了,只是有時(shí)候我們可能需要不一樣的格式,這里提供兩種方法。
1.第一種方法
看代碼
::demo.bat @echo off set datetime=%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%-%time:~6,2% echo %datetime% pause
2.第二種方法
看代碼
::demo.bat @echo off for /f "tokens=1-3 delims=/- " %%1 in ("%date%") do set datetime=%%1-%%2-%%3 for /f "tokens=1-3 delims=.: " %%1 in ("%time%") do set datetime=%datetime%-%%1-%%2-%%3 echo %datetime% pause
這兩種方法看起來第一種更簡單一點(diǎn),但是第一種會(huì)存在一個(gè)問題,就是有可能會(huì)包含空格,這樣實(shí)際使用的時(shí)候就可能會(huì)遇到問題,比如以這個(gè)字符串為名稱創(chuàng)建文件夾時(shí)可能會(huì)創(chuàng)建出來兩個(gè),所以按需使用,具體的原理這里就不解釋了。
四、bat 獲取系統(tǒng)時(shí)間,并去掉時(shí)間小時(shí)前面的空格
有時(shí)候我們需要獲取當(dāng)前系統(tǒng)的時(shí)間,如果小時(shí)小于10的話,獲取小時(shí)會(huì)出現(xiàn)空格的情況:
c:\>time 當(dāng)前時(shí)間: 19:41:41.61 c:\>echo %time:~0,2% 8 ------這個(gè)8前面是有空格的
c:\>
如何去掉空格讓時(shí)間正確的顯示呢?其實(shí)只需要將空格替換成0就可以了。
c:\>set h=%time:~0,2%
c:\>echo %h: =0% -----這里的‘=’就是‘替換’的含意
08
c:\>
你也可以將這里的空格替換成其它值:
c:\>echo %h: =aaaaa%
aaaaa8
那現(xiàn)在獲取當(dāng)前系統(tǒng)的日期和時(shí)間就可以這么寫了:
c:\>set h=%time:~0,2%
c:\>set h=%h: =0%
c:\>echo %date:~0,4%%date:~5,2%%date:~8,2%%h%%time:~3,2%%time:~6,2%
20240519194112
五、Windows bat 當(dāng)前、昨天、明天日期
當(dāng)前日期
@echo off echo %date% #輸出2024-05-19 周日 echo %date:~0,10% #2024-05-19 echo %date:~0,4%%date:~5,2%%date:~8,2% #20240519 echo %time% # 19:45:21.61 pause
昨天日期
yesterday.bat
@echo off echo Wscript.echo dateadd("d",-1,date)>vbs.vbs for /f %%a in ('cscript /nologo vbs.vbs') do del vbs.vbs&&set yyyymmdd=%%a for /f "tokens=1,2,3* delims=//- " %%i in ('echo %yyyymmdd%') do set yyyy=%%i&set mm=%%j&set dd=%%k if %mm% LSS 9 set mm=0%mm% if %dd% LSS 9 set dd=0%dd% set yesterday=%yyyy%-%mm%-%dd% echo 昨天是:%yesterday% echo 請按任意鍵退出 pause>nul
需要注意的是 delims=//-,因?yàn)椴煌僮飨到y(tǒng)不同的分隔符,2024-05-19 與 2024/05/19,/是特殊符號需要轉(zhuǎn)義,如果是-,直接就-就可以了,如下圖所示
@echo off echo Wscript.echo dateadd("d",-1,date)>vbs.vbs for /f %%a in ('cscript /nologo vbs.vbs') do del vbs.vbs&&set yyyymmdd=%%a for /f "tokens=1,2,3* delims=- " %%i in ('echo %yyyymmdd%') do set yyyy=%%i&set mm=%%j&set dd=%%k if %mm% LSS 9 set mm=0%mm% if %dd% LSS 9 set dd=0%dd% set yesterday=%yyyy%-%mm%-%dd% echo 昨天是:%yesterday% echo 請按任意鍵退出 pause>nul
明天日期
tomorrow.bat
@echo off echo Wscript.echo dateadd("d",1,date)>vbs.vbs for /f %%a in ('cscript /nologo vbs.vbs') do del vbs.vbs&&set yyyymmdd=%%a for /f "tokens=1,2,3* delims=//- " %%i in ('echo %yyyymmdd%') do set yyyy=%%i&set mm=%%j&set dd=%%k if %mm% LSS 9 set mm=0%mm% if %dd% LSS 9 set dd=0%dd% set tomorrow=%yyyy%-%mm%-%dd% echo 明天是:%tomorrow% echo 請按任意鍵退出 pause>nul
效果圖
到此這篇關(guān)于windows批處理bat腳本獲取并且處理當(dāng)前日期與時(shí)間信息的文章就介紹到這了,更多相關(guān)bat獲取當(dāng)前日期與時(shí)間的代碼分析內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
windows find findstr命令(cmd查找文檔中的特定字符)
find 命令用于查找文檔中的特定字符和數(shù)字及行號, 例如我們在閱讀文檔時(shí), 使用的快捷鍵 Ctrl + F 來查找是一個(gè)效果, 經(jīng)過 find 查找的字符也可以重定向到一個(gè)文本文檔里面去, 提取特定的字符, 來進(jìn)行文檔的整合2025-03-03批處理BAT腳本中set命令的使用詳解(批處理之家Batcher)
這篇文章是批處理之家的Batcher為大家分享的批處理BAT腳本中set命令的使用方法,也是整理的最細(xì)的一篇關(guān)于set命令的使用的2021-09-09windows下使用bat批量刪除文件(用于內(nèi)存清理)
有時(shí)候我們需要?jiǎng)h除固定目錄的一些緩存文件,每次手工太麻煩,windows下可以結(jié)合bat批量刪除一些文件更方便快捷,需要的朋友可以參考一下2023-12-12dos、bat批處理延時(shí)執(zhí)行命令的兩種方法
dos、bat批處理延時(shí)執(zhí)行命令的兩種方法...2007-10-10