.:. 草榴社區 » 技術討論區 » BAT批量修改文件名,无需安装,就几行代码,小白也能修改。
本頁主題: BAT批量修改文件名,无需安装,就几行代码,小白也能修改。字體大小 寬屏顯示 只看樓主 最新點評 熱門評論 時間順序
条野佑长佐


級別:精靈王 ( 12 )
發帖:3191
威望:679 點
金錢:1295 USD
貢獻:18888 點
註冊:2022-05-21

BAT批量修改文件名,无需安装,就几行代码,小白也能修改。

@echo off
set /a jishu=0
set mulu=D:\down\目标文件夹,如果是中文名记得bat要另存为ANSI编码
set houchuo=.mkv后辍无需修改则保持与目标文件一致,注意后辍前有个英文小点。
setlocal enabledelayedexpansion
for %%i in (%mulu%) do set "foldername=%%~nxi"
for /f "usebackq delims==" %%s in (`dir /b %mulu%\*%houchuo%`) do (
    set /a jishu+=1
    if !jishu! LSS 10 (ren "%mulu%\%%s" %foldername%0!jishu!%houchuo%) else (ren "%mulu%\%%s" %foldername%!jishu!%houchuo%)
)
echo.

——复制以上内容,解释部分修改为你所需,记事本另存为XXX.bat,双击秒改,存放在电脑里任意地方都可以,方便日后修改———

楼主按:昨天看到有朋友分享一个批量修改文件名的软件,有草友嫌弃安装要200多M。我最近刚好也在研究这个事情,把目前的研究成果分享给大家,借花敬佛之余投石问路。

因为下载到的剧集,文件名通常都带有一大段广告网站名网址,还有压制视频的参数,观看的时候标题需要滚动才能显示完整,非常麻烦。这段代码的作用:就是把你下载到的剧集,全部文件修改成“文件夹名字01.mkv”这样的格式,文件夹名字就是剧集名。这样管理观看都非常清晰明了。而且很简单的播放器也能识别自动播放下一集。

以楼主的技术水平,只能写到这个功能了。抛砖引玉希望有高手能继续进阶修改一下,能达到只修改指定后辍的文件,譬如只修改文件夹里的mkv文件,因为通常下载文件夹里还有一个bt文件,或者其他的封面图片之类。我正在研究如何找出bt文件然后自动删除。

赞(35)
免费上门,穴痒,水都流出来了!
yck314.vip
御姐,网红,模特,萝莉,少女 少妇任君挑选
yck314.vip
AD
DMCA / ABUSE REPORT | TOP Posted: 2023-12-28 10:16 發表評論
条野佑长佐 [樓主]


級別:精靈王 ( 12 )
發帖:3191
威望:679 點
金錢:1295 USD
貢獻:18888 點
註冊:2022-05-21

在等待版主审核的时间里,我已经研发出删除bt种子的语句。
del %mulu%\ /q /ah *
加在最后的echo上面就可以,删除全部隐藏文件,因为迅雷下载的文件夹里默认有一个隐藏的.torrent文件,因为是隐藏文件,处理起来很麻烦,我干脆直接删除所有隐藏文件得了,还可能顺便把隐藏的木马文件给删除(其实不大可能,还得靠杀毒软件)。
这样,你下载的剧集完成后,把文件夹名字改成剧集名字,然后修改这段代码,另存bat文件,双击运行一下,就会全部改名了。


點評

官方直营,百万存提秒到账,注册即送888元
768.app
吃瓜基地,每日更新视频上万部,世界级同步影城
q02.cc/yy.php
AD
TOP Posted: 2023-12-28 11:18 #1樓 引用 | 點評
条野佑长佐 [樓主]


級別:精靈王 ( 12 )
發帖:3191
威望:679 點
金錢:1295 USD
貢獻:18888 點
註冊:2022-05-21

@echo off
set /a jishu=0
set mulu=D:\down\test
set houchuo=.mkv
for /r "%mulu%" %%f in (*) do (
    if "%%~xf" neq "%houchuo%" (
        del "%%f"
    )
)
setlocal enabledelayedexpansion
for %%i in (%mulu%) do set "foldername=%%~nxi"
for /f "usebackq delims==" %%s in (`dir /b %mulu%\*%houchuo%`) do (
    set /a jishu+=1
    if !jishu! LSS 10 (ren "%mulu%\%%s" %foldername%0!jishu!%houchuo%) else (ren "%mulu%\%%s" %foldername%!jishu!%houchuo%)
)
del %mulu%\ /q /ah *
echo.

最新版本:指定文件夹test,保留指定后辍.mkv,其他文件删除,然后把剩下的mkv文件全部改名成  test01.mkv等排列序号。


點評

  • 条野佑长佐 樓主  赞(0)
    抱歉,忘记删除del %mulu%\ /q /ah *这段了,已经重复功能,虽然不影响。 2023-12-29 08:01
  • 条野佑长佐 樓主  赞(0)
    哈哈哈,删了这句反而不行了,我再研究一下,稍等。真菜~~ 2023-12-29 08:12
  • 飛无痕  赞(0)
    del "%%f" 改为 del /f /a "%%f" 应该就行了。显然是隐藏属性的文件没删除 2023-12-29 09:37
TOP Posted: 2023-12-29 08:00 #2樓 引用 | 點評
条野佑长佐 [樓主]


級別:精靈王 ( 12 )
發帖:3191
威望:679 點
金錢:1295 USD
貢獻:18888 點
註冊:2022-05-21

引用
引用第21樓飛无痕於2023-12-29 17:45發表的 :
仅保留.mkv,其他都删除
[code]
attrib +a %mulu%\\* /s
attrib -a %mulu%\\*.mkv /s
del /f /s /q /a:a %mulu%\\*
.......

感谢老大指点,已经修正为:
attrib +a %mulu%\* /s
attrib -a %mulu%\*%houchuo% /s
del /f /s /q /a:a %mulu%\*

这样只需要该前面两个变量保存即可一步到位。
全文如下:
@echo off
set /a jishu=0
set mulu=D:\down\test指定文件夹
set houchuo=.mp4指定保留改名的文件类型
attrib +a %mulu%\* /s
attrib -a %mulu%\*%houchuo% /s
del /f /s /q /a:a %mulu%\*
setlocal enabledelayedexpansion
for %%i in (%mulu%) do set "foldername=%%~nxi"
for /f "usebackq delims==" %%s in (`dir /b %mulu%\*%houchuo%`) do (
    set /a jishu+=1
    if !jishu! LSS 10 (ren "%mulu%\%%s" %foldername%0!jishu!%houchuo%) else (ren "%mulu%\%%s" %foldername%!jishu!%houchuo%)
)
echo.
TOP Posted: 2023-12-29 11:21 #3樓 引用 | 點評
条野佑长佐 [樓主]


級別:精靈王 ( 12 )
發帖:3191
威望:679 點
金錢:1295 USD
貢獻:18888 點
註冊:2022-05-21

最新版本是交互式的,双击bat需要粘贴目标路径和需要保留的文件后缀,这样可以避免无修改,提高效率。不过提高效率还得获取最多的后缀,然后赋予后缀变量,可惜暂时还无法实现,希望再有高手指点。
目前版本全文如下:
@echo off
set /a jishu=0
set /p mulu= 请输入完整文件夹路径:
set /p houchuo= 需要保留改名的文件后缀不含点:
attrib +a %mulu%\* /s
attrib -a %mulu%\*.%houchuo% /s
del /f /s /q /a:a %mulu%\*
setlocal enabledelayedexpansion
for %%i in (%mulu%) do set "foldername=%%~nxi"
for /f "usebackq delims==" %%s in (`dir /b %mulu%\*.%houchuo%`) do (
    set /a jishu+=1
    if !jishu! LSS 10 (ren "%mulu%\%%s" %foldername%0!jishu!.%houchuo%) else (ren "%mulu%\%%s" %foldername%!jishu!.%houchuo%)
)
echo.


點評

  • 条野佑长佐 樓主  赞(0)
    打错字了,交互式避免 误修改,不过还是缺乏效率,最好是只需粘贴目标文件夹路径回车即可,后缀直接计算文件夹内最多后缀,保留该类文件,可惜水平有限,迟迟无法解决。 2024-01-01 04:19
TOP Posted: 2024-01-01 04:16 #4樓 引用 | 點評
条野佑长佐 [樓主]


級別:精靈王 ( 12 )
發帖:3191
威望:679 點
金錢:1295 USD
貢獻:18888 點
註冊:2022-05-21

最新版本,不过还是有bug,就是当时mp4文件最多达到10个或以上,就计算出错,输出mkv,不知为何。
能否有好心的大哥帮忙修正一下。
@echo off
setlocal enabledelayedexpansion
set /p mulu=请输入完整文件夹路径:
set jimkv=0
for /r %mulu% %%f in (*.mkv) do (
    set /a jimkv+=1
)
set jirmvb=0
for /r %mulu% %%f in (*.rmvb) do (
    set /a jirmvb+=1
)
set jimp4=0
for /r %mulu% %%f in (*.mp4) do (
    set /a jimp4+=1
)
if !jimkv! gtr !jimp4!+!jirmvb!  (set houchuo=mkv) else (if !jimp4! gtr !jirmvb! (set houchuo=mp4) else (set houchuo=rmvb) )

attrib +a %mulu%\* /s
attrib -a %mulu%\*.%houchuo% /s
del /f /s /q /a:a %mulu%\*

set /a jishu=0
for %%i in (%mulu%) do set "foldername=%%~nxi"
for /f "usebackq delims==" %%s in (`dir /b %mulu%\*.%houchuo%`) do (
    set /a jishu+=1
    if !jishu! LSS 10 (ren "%mulu%\%%s" %foldername%0!jishu!.%houchuo%) else (ren "%mulu%\%%s" %foldername%!jishu!.%houchuo%)
)
echo.
TOP Posted: 2024-01-02 11:45 #5樓 引用 | 點評
条野佑长佐 [樓主]


級別:精靈王 ( 12 )
發帖:3191
威望:679 點
金錢:1295 USD
貢獻:18888 點
註冊:2022-05-21

最终成品,不再修改了。友情提示,此版本最方便,但风险也高,容易造成全盘误删,谨慎使用。
交互式版本,另存为ANSI编码的bat后缀文件,双击提示输入完整路径(就是你要批量改名的文件夹路径,如:D:\down\射雕英雄传),提供三种格式后缀文件筛选,分别是mkv,rmvb,mp4,也就是剧集最多出现的类型,因为初心就是为了批量修改剧集的名字,根据个人实际情况可以自行修改替换格式。
目的就是:判断该剧集是mkv,rmvb,mp4中的哪一个,然后保留这个类型删除其他多余文件(如隐藏的迅雷种子,广告文件),剩下纯剧集文件,统一改名为如:文件夹名字01.mkv~N.mkv这样。
风险警告:这个版本为了方便使用,改成交互式,CMD窗口提示输入完整路径,你可以在目标文件夹地址栏复制,然后在这里右键即可粘贴,回车秒完成。但前提是你要确定你的剪切板里肯定是这个路径地址,否则容易导致程序崩溃,秒删所在盘全部内容。
@echo off
setlocal enabledelayedexpansion
set /p mulu=请输入完整文件夹路径:
del /q /ah %mulu%\*
set /a jimkv=0
for /r %mulu% %%f in (*.mkv) do (
    set /a jimkv+=1
)
set jirmvb=0
for /r %mulu% %%f in (*.rmvb) do (
    set /a jirmvb+=1
)
if !jimkv! gtr 2 (set houchuo=mkv) else (if !jirmvb! gtr 2 (set houchuo=rmvb) else (set houchuo=mp4) )
for /r "%mulu%" %%f in (*) do (
    if "%%~xf" neq ".%houchuo%" (
        del "%%f"
    )
)
set /a jishu=0
for %%i in (%mulu%) do set "foldername=%%~nxi"
for /f "usebackq delims==" %%s in (`dir /b %mulu%\*.%houchuo%`) do (
    set /a jishu+=1
    if !jishu! LSS 10 (ren "%mulu%\%%s" %foldername%0!jishu!.%houchuo%) else (ren "%mulu%\%%s" %foldername%!jishu!.%houchuo%)
)
echo.
TOP Posted: 2024-01-09 04:35 #6樓 引用 | 點評
.:. 草榴社區 » 技術討論區

電腦版 手機版 客戶端 DMCA
用時 0.02(s) x3, 07-15 01:36