返回列表 发帖

[文件管理] 批处理批量文件后缀重命名

:cd
set "p=:"
set "hzm=:"
set "wjm=:"
set "xz=:"
cls
@echo off
mode con COLS=75 lines=8
setlocal enabledelayedexpansion
title f m r 5 2 0 欢迎使用批量文件 后缀重命名
color e
echo. ╭──────────────╮
echo. │欢迎使用批量文件 后缀重命名 │
echo. ╰──────────────╯
echo.
echo 1.文件重命名 0.退出 2.后缀重命名
echo. ────────────────────────────────────
set /p xz=(1/0/2):
set "xz=%xz:"=%"
if "%xz%"==":" goto cd
if "%xz%"=="1" goto 1_
if "%xz%"=="0" exit
if "%xz%"=="2" goto 2_
exit
:1_
cls
echo ╔══════════╗
set /p p=║要改名的目录放到这里║:
set "p=%p:"=%"
if "%p%"==":" goto 1_
:hzm_
cls
echo.╭───────────────────────╮
echo.│ 输入要更改的文件名后缀,不要加小数点 (. ),│
echo.│───────────────────────│
echo.│ (*) 将会对该目录下的文件全部改名 │
echo.╰───────────────────────╯
echo.╔═══════════════════╗
set /p hzm=║输入要更改的后缀名 (jpg bmp txt exe *)║:
set "hzm=%hzm:"=%"
if "%hzm%"==":" goto hzm_
:wjm_
cls
echo.
echo.╭──────────────────────────╮
echo.│ 如不输入替换的文件名,将会把文件改成按数字顺序命名 │
echo.╰──────────────────────────╯
echo. ────────────────────────────────────
echo.╔═════════╗
set /p wjm=║输入要替换的文件名║:
set "wjm=%wjm:"=%"
cls
echo.
echo 程序正在运行中......
echo.
echo.
for /f "tokens=*" %%a in ('dir/b "%p%\*.%hzm%"') do (call :rib "%%a")>nul 2>nul
for /f "tokens=*" %%i in ('dir/b "%p%\*.%hzm%" ^|findstr/i/v/c:"0123456789"') do (set /a
sum+=1
call title 正在更改第 %%sum%% 个文件 %%i
ping 1.1 /w 300<NUL
call :rrr "%%i")>nul 2>nul
cls
echo.
echo 完成!谢谢使用
pause>nul
exit
:rrr
cd/d"%p%"
ren %1 %wjm%%sum%%~x1
goto :eof
:rib
cd/d"%p%"
attrib -s %1
goto :eof
:2_
set "qwe=:"
set "hzn=:"
set "gg=:"
cls
echo ╔════════════╗
set /p qwe=║要改后缀名的目录放到这里║:
set "qwe=%qwe:"=%"
if "%qwe%"==":" goto 2_
:hzn_
cls
echo.╭────────────────────╮
echo.│ 输入更改的后缀名,不要加小数点 (. ),│
echo.│────────────────────│
echo.│ (*) 将会对该目录下的后缀名全部更改 │
echo.╰────────────────────╯
echo.╔═══════════════════╗
set /p hzn=║输入要更改的后缀名 (jpg bmp txt exe *)║:
set "hzn=%hzn:"=%"
if "%hzn%"==":" goto hzn_
:gg_
cls
echo.
echo.╭──────────────────╮
echo.│ 输入要替换的后缀名,不要加小数点 . │
echo.╰──────────────────╯
echo. ────────────────────────────────────
echo.╔═══════════════════╗
set /p gg=║输入要替换的后缀名 (jpg bmp txt exe)║:
set "gg=%gg:"=%"
if "%gg%"==":" goto gg_
cls
echo.
echo 程序正在运行中......
echo.
echo.
for /f "tokens=*" %%t in ('dir/b "%qwe%\*.%hzn%" ^|findstr/i/v/c:"0123456789"') do (set /a
sxm+=1
call title 正在更改第 %%sxm%% 个文件 %%t
ping 1.1 /w 300<NUL
cd/d"%qwe%\"
call :rzr "%%t")>nul 2>nul
cls
echo.
echo 完成!谢谢使用
pause>nul
:rzr
cd/d"%qwe%\"
ren %1 "%~n1.%gg%"
goto :eofCOPY
1

评分人数

@set,=学无止境
@for /l %%b in (0,1,6) do @call set/p= %%,:~%%b,1%%<nul

lz,不行啊!不是说批量文件后缀重命名,咋的只能重命名1个???

TOP

回复 2楼 的帖子

能否说说你详细的测试过程?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

把lz的代码保存为"批量文件后缀重命名.bat"
双击打开
1, 回车
G:\ADFM, 回车
*, 回车
回车
......
完成后,打开一看一个文件也没有重命名
第二次
1, 回车
G:\ADFM, 回车
*, 回车
1, 回车
......
完成后,打开一看,只有一个文件重命名为1
(改后缀我试过了,可以的,但重命名就不行了)

TOP

不管怎样 感谢分享了 好东西

TOP

好像挺复杂的,学习了

TOP

可以使用 就是太慢了

TOP

楼主,这个可以增加遍历子目录功能吗?

TOP

返回列表