方法1:基础版 - 使用%DATE%和%TIME%
@echo off
setlocal enabledelayedexpansion
REM 设置源文件(可以修改为你需要的文件)
set "filename=example.txt"
REM 检查文件是否存在
if not exist "%filename%" (
echo 文件不存在: %filename%
pause
exit /b
)
REM 获取当前日期时间(格式:YYYYMMDD_HHMMSS)
set "timestamp=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%"
REM 替换时间中的空格(如果小时小于10会有空格)
set "timestamp=!timestamp: =0!"
REM 重命名文件
ren "%filename%" "%timestamp%_%filename%"
echo 文件已重命名为: %timestamp%_%filename%
pause
方法2:改进版 - 处理小时小于10的情况
@echo off
setlocal enabledelayedexpansion
REM 设置源文件
set "filename=example.txt"
if not exist "%filename%" (
echo 文件不存在: %filename%
pause
exit /b
)
REM 获取日期部分
set "year=%DATE:~6,4%"
set "month=%DATE:~3,2%"
set "day=%DATE:~0,2%"
REM 获取时间部分
set "hour=%TIME:~0,2%"
set "minute=%TIME:~3,2%"
set "second=%TIME:~6,2%"
REM 处理小时小于10的情况(前面补0)
if "!hour:~0,1!"==" " set "hour=0!hour:~1!"
REM 构建时间戳
set "timestamp=%year%%month%%day%_%hour%%minute%%second%"
REM 重命名文件
ren "%filename%" "%timestamp%_%filename%"
echo 重命名完成: %timestamp%_%filename%
pause
方法3:批量处理当前目录下所有文件
@echo off
setlocal enabledelayedexpansion
REM 获取时间戳
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set "datetime=%%I"
set "timestamp=%datetime:~0,8%_%datetime:~8,6%"
REM 批量处理当前目录下所有文件(不包括子目录)
for %%F in (*.*) do (
if not "%%~nxF"=="%~nx0" ( REM 排除批处理文件本身
ren "%%F" "%timestamp%_%%F"
echo 已重命名: %%F → %timestamp%_%%F
)
)
echo.
echo 批量重命名完成!
pause
方法4:选择性批量处理(指定扩展名)
@echo off
setlocal enabledelayedexpansion
REM 使用WMIC获取精确时间戳
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set "datetime=%%I"
set "timestamp=%datetime:~0,8%_%datetime:~8,6%"
echo 请选择要处理的文件类型:
echo 1. 所有文件
echo 2. 仅文本文件 (.txt)
echo 3. 仅图片文件 (.jpg, .png, .gif)
echo 4. 自定义扩展名
set /p choice="请输入选择 (1-4): "
if "%choice%"=="1" (
set "extensions=*.*"
) else if "%choice%"=="2" (
set "extensions=*.txt"
) else if "%choice%"=="3" (
set "extensions=*.jpg *.png *.gif"
) else if "%choice%"=="4" (
set /p extensions="请输入扩展名(如:*.doc *.pdf):"
) else (
echo 无效选择
pause
exit /b
)
REM 批量处理
set count=0
for %%F in (%extensions%) do (
if not "%%~nxF"=="%~nx0" (
ren "%%F" "%timestamp%_%%~nxF"
set /a count+=1
)
)
echo.
echo 已完成 %count% 个文件的重命名!
pause
方法5:带备份功能的版本
@echo off
setlocal enabledelayedexpansion
REM 创建备份文件夹
set "backup_folder=backup_%date:~6,4%%date:~3,2%%date:~0,2%"
if not exist "%backup_folder%" mkdir "%backup_folder%"
REM 获取时间戳
set "timestamp=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%_%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%"
set "timestamp=!timestamp: =0!"
echo 正在处理文件...
REM 处理所有文件(备份并重命名)
for %%F in (*.*) do (
if not "%%~nxF"=="%~nx0" (
REM 复制到备份文件夹
copy "%%F" "%backup_folder%\%%F" >nul
REM 重命名原文件
ren "%%F" "%timestamp%_%%F"
echo 已处理: %%F
)
)
echo.
echo 所有文件已备份到: %backup_folder%\
echo 重命名已完成!
pause
使用方法:
将上述代码保存为
.bat 文件(如:
rename_timestamp.bat)
根据需要修改文件名或扩展名设置
将批处理文件放在要重命名的文件所在目录
双击运行
注意事项:
- 方法1-2适用于单个文件,方法3-5适用于批量处理
- WMIC方法(方法3、4)提供更可靠的时间格式
- 方法5会在重名前创建备份
- 如果文件名中包含空格,请确保使用双引号括起来
- 某些系统可能需要管理员权限才能执行重命名操作