益阳市万年长

使用Windows批处理bat实现文件重命名加时间戳

2026-03-27 08:34:04 浏览次数:0
详细信息

方法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) 根据需要修改文件名或扩展名设置 将批处理文件放在要重命名的文件所在目录 双击运行

注意事项:

相关推荐