首页 热点资讯 义务教育 高等教育 出国留学 考研考公

批处理按要求批量重命名

发布网友 发布时间:2022-04-26 17:34

我来回答

5个回答

热心网友 时间:2023-10-17 20:05

如果只是针对你的例子,那么很容易做到,但是如果要应用到其它文件就很难了,因为命名规则不一样。最好的办法是,自己设定通用命名,然后程序添加数字集数。

@echo off&setlocal ENABLEDELAYEDEXPANSION
set "debug=echo"
::set "debug=echo" 时,表示调试模式,不会更改文件名,用以检查更名是否符合要求;删除上面这句,运行即可更改文件名。
set /p 通配字=请输入通配字符:
::如"越狱",能区别其它电影即可。
set /p 通用名=请输入通用名:
::=========通用名说明===============
::1、命名使用“$”代替集数变量,可以用在文件名的任意位置。
::2、单"$"表示使用文件本身的集数数字;
::3、双"$$"表示使用自定义的2位数字,不足2位的前面添0,如01。
::4、三“$$$”表示使用自定义的3位数字,前面添0凑足3位,如001,010。
::5、注意:原文件名的数字第一位就带有0的,只能使用单"$"。
::示例:匹配字输入"越狱",通用名输入"越狱第4季_DVD_$$",数字输入"3"(前面有84,4两个无关数字), 输出 "越狱第4季_DVD_08.rmvb" 。

:分析规则
if not "%通用名%"=="%通用名:$=%" set bl=1&set th=$
if not "%通用名%"=="%通用名:$$=%" set bl=2&set th=$$
if not "%通用名%"=="%通用名:$$$=%" set bl=3&set th=$$$
for /f "delims=" %%a in ('dir /a-d /b *%通配字%* ') do (
if not defined tokens (
set /p tokens=请查看文件名“%%~na”,输入作为文件集数是第几个数字?:
)
set "str=%%~na"
for /l %%i in (0 1 9) do set "str=!str:%%i=!"
call :重命名 "!str!" "%%a" !tokens!
)
echo,更名完成!
pause>nul
goto :eof

:重命名
for /f "tokens=%3 delims=%~1" %%n in ("%~n2") do (
if !bl! equ 1 (
%debug% ren %2 "!通用名:$=%%n!%~x2"
) else (
set /a num=%%n+1000
for %%x in (%bl%) do set "num=!num:~-%%x!"
for /f "tokens=1,2" %%x in ("!num! %th%") do %debug% ren %2 "!通用名:%%y=%%x!%~x2"
)
)

热心网友 时间:2023-10-17 20:06

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /s /b *.rmvb^|findstr "ff84"') do (
set x=%%i
set y=%%~nxi
set z=!y:~20,2!
set z=!z:集=!
if !z! lss 10 set z=0!z!
move !x! 越狱第4季_DVD_!z!.rmvb
)
pause

尽量保证电影文件路径无空格追问命令语法不正确是怎么回事?请检查一下吧

追答1.只测试了XP系统,win7的可能不行。
2.保证你存放电影的文件夹名没有空格
3.下面move命令改为了rename.
4.如果还不行,把第1句命令的“@echo off&”去掉,再次运行,看看是哪一行的命令语法不正确

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /s /b *.rmvb^|findstr "ff84"') do (
set x=%%i
set y=%%~nxi
set z=!y:~20,2!
set z=!z:集=!
if !z! lss 10 set z=0!z!
rename "!x!" "越狱第4季_DVD_!z!.rmvb"
)
pause

热心网友 时间:2023-10-17 20:06

写个批处理也是有针对性的,你还不如下载:

文件文件夹批量重命名自定义工具[单文件版]V1.00 绿色版

这个软件你想怎么换名都可以。同时支持文件夹换名。追问那些基本上都有病毒,而且担心重命名后集数会给我打乱了

热心网友 时间:2023-10-17 20:07

@echo off
for /f "tokens=1* delims=]" %%i in ('dir/b/a-d *.rmvb') do ren "%%i]%%j" "%%j"
::dir取文件名以】为分隔符,改名时只保留分隔符后面的部分。

热心网友 时间:2023-10-17 20:08

@echo off
set a=[www.ff84.com]
for /l %%i in (1,1,10) do ren %a%越狱第4季第%%i集.rmvb 越狱第4季_DVD_0%%i.rmvb
这样第十个会变成010集 嘿嘿 。懒得改了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com