潍坊市转运信息网

dos日期获取%date:~0,4%和 %time:~0,2%字符截取操作用法

2026-04-21 21:58:04 浏览次数:1
详细信息

DOS(或Windows命令提示符)中可以使用环境变量 %date%%time% 来获取当前日期和时间,并通过字符串截取来提取其中的部分内容。

1. 基本变量

2. 字符串截取语法

%变量:~起始位置,长度%

3. 常见用法示例

3.1 提取年份(假设日期格式为 2024-01-30

echo %date:~0,4%

结果:2024

3.2 提取月份

echo %date:~5,2%

(因为 2024-01-30 中月份从第5个字符开始,取2位)

3.3 提取日

echo %date:~8,2%

3.4 提取小时(注意小时可能前面有空格)

echo %time:~0,2%

如果时间小于10点(如 8:05:30),上面会得到带空格的 " 8",通常需要去除空格

set hour=%time:~0,2%
set hour=%hour: =0%
echo %hour%

这样 " 8" 会变成 "08"

3.5 提取分钟

echo %time:~3,2%

3.6 提取秒

echo %time:~6,2%

4. 实际应用:生成时间戳文件名

set year=%date:~0,4%
set month=%date:~5,2%
set day=%date:~8,2%
set hour=%time:~0,2%
set hour=%hour: =0%
set minute=%time:~3,2%
set second=%time:~6,2%

set timestamp=%year%%month%%day%_%hour%%minute%%second%
echo %timestamp%

结果可能为:20240130_084530

5. 注意区域格式问题

如果日期格式是 周二 2024/01/30,那么年份的位置就不是 0,4 了。
可以先测试你的系统格式:

echo [%date%]
echo [%time%]

然后根据显示调整截取位置。

6. 在批处理文件中使用

.bat 文件中,如果要在代码块(如 iffor 中)使用,需要启用变量延迟扩展,并使用 !var! 代替 %var%

@echo off
setlocal enabledelayedexpansion

set hour=%time:~0,2%
set hour=!hour: =0!
echo !hour!

7. 更通用的方法(使用wmic)

为了避免区域格式问题,可以用 wmic 命令获取标准格式的日期和时间:

for /f "tokens=1-3 delims=/ " %%a in ('wmic os get LocalDateTime /value ^| findstr "LocalDateTime"') do (
    set datetime=%%a
)
set datepart=!datetime:~0,8!
set timepart=!datetime:~8,6!
echo 日期: !datepart!
echo 时间: !timepart!

如果需要我帮你写一个适应你系统格式的完整例子,可以告诉我你的 echo %date%echo %time% 的输出结果。

相关推荐