@echo off
:: 获取当前日期和时间
echo %date%
echo %time%
:: 输出格式示例:
:: 2023-12-25 或 周一 2023/12/25 (取决于区域设置)
:: 10:30:45.50
@echo off
:: 方法1:使用变量扩展(适用于YYYY-MM-DD格式)
set current_date=%date%
set year=%current_date:~0,4%
set month=%current_date:~5,2%
set day=%current_date:~8,2%
echo 年份: %year%
echo 月份: %month%
echo 日期: %day%
:: 方法2:更通用的方法
for /f "tokens=1-3 delims=-/ " %%a in ("%date%") do (
set year=%%a
set month=%%b
set day=%%c
)
@echo off
:: 获取时间各部分
set current_time=%time%
set hour=%current_time:~0,2%
set minute=%current_time:~3,2%
set second=%current_time:~6,2%
echo 小时: %hour%
echo 分钟: %minute%
echo 秒数: %second%
:: 处理小时前导空格(当小时小于10时)
if "%hour:~0,1%"==" " set hour=0%hour:~1,1%
@echo off
:: 使用WMIC获取标准格式的日期时间(不受区域设置影响)
for /f "tokens=1-6 delims=/-: " %%a in ('wmic os get localdatetime ^| find "."') do (
set dt_year=%%a
set dt_month=%%b
set dt_day=%%c
set dt_hour=%%d
set dt_min=%%e
set dt_sec=%%f
)
echo 标准格式: %dt_year%-%dt_month%-%dt_day% %dt_hour%:%dt_min%:%dt_sec%
@echo off
:: 创建自定义格式的日期时间字符串
for /f "tokens=1-6 delims=/-: " %%a in ('wmic os get localdatetime ^| find "."') do (
set dt=%%a%%b%%c%%d%%e
)
echo 格式化字符串(YYYYMMDDHHMM): %dt%
:: 另一种方法
set timestamp=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%
set timestamp=%timestamp: =0% :: 替换空格为0
echo 时间戳: %timestamp%
@echo off
:: 使用PowerShell进行日期计算
:: 获取昨天的日期
for /f %%i in ('powershell -Command "(Get-Date).AddDays(-1).ToString('yyyy-MM-dd')"') do set yesterday=%%i
:: 获取明天的日期
for /f %%i in ('powershell -Command "(Get-Date).AddDays(1).ToString('yyyy-MM-dd')"') do set tomorrow=%%i
echo 昨天: %yesterday%
echo 明天: %tomorrow%
@echo off
:: 获取当前日期时间并生成文件名
setlocal enabledelayedexpansion
:: 方法1:使用变量扩展
set date_part=%date:~0,4%%date:~5,2%%date:~8,2%
set time_part=%time:~0,2%%time:~3,2%%time:~6,2%
set time_part=!time_part: =0!
set filename=backup_%date_part%_%time_part%.zip
echo 生成的文件名: %filename%
:: 方法2:使用WMIC
for /f "tokens=2 delims==." %%a in ('wmic os get localdatetime /value ^| find "LocalDateTime"') do (
set dt=%%a
)
set dt_year=%dt:~0,4%
set dt_month=%dt:~4,2%
set dt_day=%dt:~6,2%
set dt_hour=%dt:~8,2%
set dt_min=%dt:~10,2%
set dt_sec=%dt:~12,2%
set logfile=log_%dt_year%%dt_month%%dt_day%_%dt_hour%%dt_min%%dt_sec%.txt
echo 日志文件名: %logfile%
:: 显示友好的日期时间格式
echo 当前时间: %dt_year%年%dt_month%月%dt_day%日 %dt_hour%时%dt_min%分%dt_sec%秒
endlocal
@echo off
:: 通用方法处理不同日期格式
setlocal enabledelayedexpansion
echo 当前日期格式: %date%
:: 尝试自动检测格式
if "%date:~4,1%"=="-" (
:: 格式为 YYYY-MM-DD
set fmt_year=%date:~0,4%
set fmt_month=%date:~5,2%
set fmt_day=%date:~8,2%
) else if "%date:~2,1%"=="-" (
:: 格式为 DD-MM-YYYY
set fmt_day=%date:~0,2%
set fmt_month=%date:~3,2%
set fmt_year=%date:~6,4%
) else (
:: 使用WMIC作为后备
for /f "tokens=2 delims==." %%a in ('wmic os get localdatetime /value ^| find "LocalDateTime"') do (
set dt=%%a
)
set fmt_year=%dt:~0,4%
set fmt_month=%dt:~4,2%
set fmt_day=%dt:~6,2%
)
echo 标准化日期: %fmt_year%-%fmt_month%-%fmt_day%
endlocal
%date%和%time%的格式取决于系统区域设置
推荐使用WMIC:使用wmic os get localdatetime可以获取标准格式,不受区域设置影响
时间格式:当小时小于10时,%time%会用空格填充,需要特殊处理
批处理版本:Windows XP可能不支持某些命令
这些方法可以根据需要进行组合和调整,以适应不同的使用场景。