0428更新日志:
1.修改标题
2.修改窗口大小
3.修改提示信息
4..修改替换逻辑
@echo off
setlocal enabledelayedexpansion
mode con cols=100 lines=120
echo 作者:phenix
echo.
echo 邮箱:279682817@qq.com
echo.
echo 替换文件名中的特定字符
echo.
echo 使用方法:1.使用前先备份一份原始数据 2.先查看找到的数据是否满足要求,如果都满足,用全部替换,否则用单个替换
echo.
title 批量替换文件名工具
set /p lujing=请输入路径,比如c:\图片\:
set /p name=请输入要替换的字符值:
set /p fixname=请输入文件类型,直接回车表示任意类型,输入多个用空格分开,比如.txt .jpg:
if "!fixname!" equ "" (
set fixname=.
)
echo 查找到的文件如下,文件名保存在当前目录的"替换文件名列表.txt",查找完毕自动打开,核对无误后下一步操作:
echo.>替换文件名列表.txt
for /f "usebackq tokens=*" %%i in (`dir /s /a-d /b "!lujing!"^|findstr "!name!"^|findstr /r "!fixname!$"`) do (
echo %%i
echo %%i>>替换文件名列表.txt
)
start 替换文件名列表.txt
set /p conf=确认重命名?全部重命名不提示输入1,重命名每个文件提示输入2,不重命名输入3:
if "!conf!" equ "1" (
call :changefile
) else (
if "!conf!" equ "2" (
call :changefile
)
)
echo 完毕!
pause
exit
:changefile
set /p rname=请输入替换成的值,直接回车表示替换为空值:
for /f "usebackq tokens=*" %%k in (`dir /s /b /ad "!lujing!"^&echo !lujing!`) do (
for /f "usebackq tokens=*" %%m in (`dir /b "%%k"^|findstr "!name!"^|findstr /r "!fixname!$"`) do (
set fname=%%m
if "!conf!" equ "1" (
call set "val=%%fname:!name!=!rname!%%"
move /y "%%k\!fname!" "%%k\!val!"
) else (
if "!conf!" equ "2" (
set cfconf=
set /p cfconf=确认重命名!fname!?是输入1,否输入2:
if "!cfconf!" equ "1" (
call set "val1=%%fname:!name!=!rname!%%"
move /y "%%k\!fname!" "%%k\!val1!"
)
)
)
)
)