2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Windows bat 批处理 日期时间格式化

Windows bat 批处理 日期时间格式化

时间:2019-09-16 06:14:55

相关推荐

Windows bat 批处理 日期时间格式化

一、背景

有一个批处理脚本,脚本中根据当前日期,动态的生成日志文件,

如:当前是 06月20日,我希望生成的日志文件名为:XX_0620.log

二、获取日期和时间

Windows 在批处理中 获取日期和时间的方式如下:

C:\Users\cyinl>echo "%date%""/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%/06/20 周二C:\Users\cyinl>echo %date:~0,4%C:\Users\cyinl>echo %date:~5,2%06C:\Users\cyinl>echo %date:~8,2%20C:\Users\cyinl>echo %date:~-2%周一C:\Users\cyinl>echo %date:~0,-2%/06/20C:\Users\cyinl>echo %date:~-8,3%06/C:\Users\cyinl>echo %date:~-8,-3%06/20C:\Users\cyinl>echo %date:~4%/06/20 周一C:\Users\cyinl>echo %date:~,4%C:\Users\cyinl>echo %date:~4,%ECHO 处于打开状态。

起始位置:

1)起始值为 正,表示正着数,如:%date:~5,2%,表示从正着数第5个字符,往后截取2个字符(不含第5个字符);

2)起始值为 负,表示倒着数,如:%date:~-8,3%,表示从倒着数第8个字符,往后截取3个字符(含第8个字符);

3)起始值为0或空,表示从最左边开始,如:%date:~,4%%date:~0,4%都表示从左边起始位置,截取2个字符;

(起始位置如果省略,必需有个逗号占位,如果逗号省略则表示【截止长度为空】)截止长度(偏移量):

1)截止长度为 正,表示截取长度,如:%date:~8,2%,表示从正着数第8个字符,往后截取2个字符(不含第8个字符);

2)截止长度为 负,表示结束位置,如:%date:~-8,-3%,表示从倒着数第8个字符,往后截取,一直截取到倒数第3个字符的位置(含倒数第8个字符,不含倒数第3个字符);

3)截止长度为 空,表示截取到结尾位置,如:%date:~4%,表示从正着数第4个字符,往后截取所有字符(不含第4个字符);

(截止长度如果省略,不能有逗号占位,逗号占位会报:ECHO 处于打开状态)

2. 字符串拼接

字符串拼接比较简单,直接将多个字符串,结合想要的字符拼接到一起就行

C:\Users\cyinl>set var1=aaaC:\Users\cyinl>set var2=bbbC:\Users\cyinl>echo A=%var1%A=aaaC:\Users\cyinl>echo B=%var2%B=bbbC:\Users\cyinl>set "AB=%var1%%var2%"C:\Users\cyinl>echo %AB%aaabbbC:\Users\cyinl>echo %var1%^<%var2%aaa<bbbC:\Users\cyinl>echo %var1%^&^&%var2%aaa&&bbb

需要注意的是,bat批处理中有一些特殊字符,需要进行转义才能作为字符使用,如:

1、@命令行回显屏蔽符2、%批处理变量引导符3、>重定向符4、>>重定向符5、<、>&、<&重定向符6、|命令管道符7、^转义字符8、&组合命令9、&&组合命令10、||组合命令11、""字符串界定符...

3. 日期时间格式化

C:\Users\cyinl>echo %date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,8%-06-20 10:05:14C:\Users\cyinl>echo %date:~0,4%%date:~5,2%%date:~8,2%0620

四、使用示例

回归到最开始我要解决的问题,动态生成按日期划分的日志文件,bat 批处理脚本内容如下:

@echo offREM chcp 65001cd F:\Chen\python3\ExciseCset fdate=%date:~0,4%%date:~5,2%%date:~8,2%python CSDNScan_v2.py >> scan_history_%fdate%.log 2>&1REM ping -n 3 127.0.0.1>nulREM PAUSE

脚本运行后,生成的日志文件如下:

参考资料:/peng_cao/article/details/74170979

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。