一、背景
有一個批處理腳本,腳本中根據(jù)當(dāng)前日期,動態(tài)的生成日志文件,
如:當(dāng)前是 2023年06月20日,我希望生成的日志文件名為:XX_20230620.log
二、獲取日期和時間
Windows 在批處理中 獲取日期和時間的方式如下:
C:\Users\cyinl>echo "%date%"
"2023/06/20 周一"
C:\Users\cyinl>echo "%time%"
"09:47:34.41"
echo %time%
輸出的時間格式:HH:MM:SS.NN
HH
:時MM
:分SS
:秒NN
:厘秒(注意不是毫秒,1秒=10分秒=100厘秒=1000毫秒)
三、日期時間格式化處理
Windows 在批處理中對日期時間格式化的處理,其實就是對字符串的處理。
%date%、%time% 都是字符串,只需對兩者進行截取再拼接為需要的格式即可。
1. 字符串截取
語法:目標字符串=%源字符串:~起始位置,截取長度%
C:\Users\cyinl>echo %date%
2023/06/20 周二
C:\Users\cyinl>echo %date:~0,4%
2023
C:\Users\cyinl>echo %date:~5,2%
06
C:\Users\cyinl>echo %date:~8,2%
20
C:\Users\cyinl>echo %date:~-2%
周一
C:\Users\cyinl>echo %date:~0,-2%
2023/06/20
C:\Users\cyinl>echo %date:~-8,3%
06/
C:\Users\cyinl>echo %date:~-8,-3%
06/20
C:\Users\cyinl>echo %date:~4%
/06/20 周一
C:\Users\cyinl>echo %date:~,4%
2023
C:\Users\cyinl>echo %date:~4,%
ECHO 處于打開狀態(tài)。
- 起始位置:
1)起始值為 正,表示正著數(shù),如:%date:~5,2%
,表示從正著數(shù)第5個字符,往后截取2個字符(不含第5個字符);
2)起始值為 負,表示倒著數(shù),如:%date:~-8,3%
,表示從倒著數(shù)第8個字符,往后截取3個字符(含第8個字符);
3)起始值為0或空,表示從最左邊開始,如:%date:~,4%
,%date:~0,4%
都表示從左邊起始位置,截取2個字符;
(起始位置如果省略,必需有個逗號占位,如果逗號省略則表示【截止長度為空】) - 截止長度(偏移量):
1)截止長度為 正,表示截取長度,如:%date:~8,2%
,表示從正著數(shù)第8個字符,往后截取2個字符(不含第8個字符);
2)截止長度為 負,表示結(jié)束位置,如:%date:~-8,-3%
,表示從倒著數(shù)第8個字符,往后截取,一直截取到倒數(shù)第3個字符的位置(含倒數(shù)第8個字符,不含倒數(shù)第3個字符);
3)截止長度為 空,表示截取到結(jié)尾位置,如:%date:~4%
,表示從正著數(shù)第4個字符,往后截取所有字符(不含第4個字符);
(截止長度如果省略,不能有逗號占位,逗號占位會報:ECHO 處于打開狀態(tài))
2. 字符串拼接
字符串拼接比較簡單,直接將多個字符串,結(jié)合想要的字符拼接到一起就行
C:\Users\cyinl>set var1=aaa
C:\Users\cyinl>set var2=bbb
C:\Users\cyinl>echo A=%var1%
A=aaa
C:\Users\cyinl>echo B=%var2%
B=bbb
C:\Users\cyinl>set "AB=%var1%%var2%"
C:\Users\cyinl>echo %AB%
aaabbb
C:\Users\cyinl>echo %var1%^<%var2%
aaa<bbb
C:\Users\cyinl>echo %var1%^&^&%var2%
aaa&&bbb
需要注意的是,bat批處理中有一些特殊字符,需要進行轉(zhuǎn)義才能作為字符使用,如:
1、@ 命令行回顯屏蔽符
2、% 批處理變量引導(dǎo)符
3、> 重定向符
4、>> 重定向符
5、<、>&、<& 重定向符
6、| 命令管道符
7、^ 轉(zhuǎn)義字符
8、& 組合命令
9、&& 組合命令
10、|| 組合命令
11、"" 字符串界定符
...
3. 日期時間格式化
C:\Users\cyinl>echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,8%
2023-06-20 10:05:14
C:\Users\cyinl>echo %date:~0,4%%date:~5,2%%date:~8,2%
20230620
四、使用示例
回歸到最開始我要解決的問題,動態(tài)生成按日期劃分的日志文件,bat 批處理腳本內(nèi)容如下:
@echo off
REM chcp 65001
cd F:\Chen\python3\ExciseC
set fdate=%date:~0,4%%date:~5,2%%date:~8,2%
python CSDNScan_v2.py >> scan_history_%fdate%.log 2>&1
REM ping -n 3 127.0.0.1>nul
REM PAUSE
腳本運行后,生成的日志文件如下:文章來源:http://www.zghlxwxcb.cn/news/detail-681357.html
參考資料:https://blog.csdn.net/peng_cao/article/details/74170979文章來源地址http://www.zghlxwxcb.cn/news/detail-681357.html
到了這里,關(guān)于Windows bat 批處理 日期時間格式化的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!