bat根据当前日期创建文件夹的方法(批处理命令可按最新日期复制)学到了吗

随心笔谈2年前发布 admin
196 0 0

文章摘要

本文介绍了如何在命令行窗口中设置日期和时间的显示格式,以防止中文乱码并确保打印输出的准确性。主要内容包括: 1. 设置编码格式为UTF-8:使用`chcp 65001`确保中文字符正确显示。 2. 隐藏命令回显:使用`@echo off`避免命令输出到终端。 3. 提取当前日期和时间:通过`set`命令提取年、月、日、小时、分钟、秒和毫秒。 4. 格式化日期和时间:使用`%date%`和`%time%`提取字段,并根据不同系统调整截取位置。 5. 处理特殊格式:当时间小于等于9时,正确补上前导零。 6. 创建以日期和时间命名的文件夹:使用提取的字段生成命名格式为`YYYYMMDD_HHMMSS.milliseconds`的文件夹。 总结了上述步骤,突出其核心内容和实用技巧。

:: 设置CMD显示的编码格式为UTF-8(防止中文乱码)
chcp 65001

:: @echo off 表示不回显执行的命令
@echo off
::一定要看下当前日期的格式,不同的windows系统,打印的当前时间格式可能不一样(这样的年月日截取的开始位置就不一样),防止被坑
set ORIGINAL_DATE=%date%
echo %ORIGINAL_DATE%
:: 日期截取遵从格式 %date:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)
:: 可以看到打印出来的当前日期ORIGINAL_DATE:周一 2022/03/21
:: 年份从第3位开始截取4位,月份从第5位开始截取2位,日期从第8位开始截取2位
set YEAR=%date:~3,4%
set MONTH=%date:~8,2%
set DAY=%date:~11,2%
:: 时间截取遵从格式 %time:~x,y%,表示从第x位开始,截取y个长度(x,y的起始值为0)
:: 时钟从第0位开始截取2位,分钟从第3位开始截取2位,秒钟从第6位开始截取2位
set HOUR=%time:~0,2%
set MINUTE=%time:~3,2%
set SECOND=%time:~6,2%
:: 毫秒
set MILLISECIOND=%time:~9,2%
:: 当时钟小于等于9时,前面有个空格,这时我们少截取一位,从第1位开始截取
set TMP_HOUR=%time:~1,1%
set NINE=9
set ZERO=0
:: 处理时钟是个位数的时候前面补上一个0, LEQ表示小于等于
:: if 和 set 一定要在同一行
if %HOUR% LEQ %NINE% set HOUR=%ZERO%%TMP_HOUR%
set CURRENT_DATE_TIME_STAMP=%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%%SECOND%%MILLISECIOND%
mkdir %CURRENT_DATE_TIME_STAMP%
pause

© 版权声明

相关文章