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


級別:騎士 ( 10 )
發帖:2389
威望:415 點
金錢:7096 USD
貢獻:300 點
註冊: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)
DMCA / ABUSE REPORT | TOP Posted: 12-28 18:16 發表評論
条野佑长佐 [樓主]


級別:騎士 ( 10 )
發帖:2389
威望:415 點
金錢:7096 USD
貢獻:300 點
註冊:2022-05-21

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


點評

    TOP Posted: 12-28 19:18 #1樓 引用 | 點評
    条野佑长佐 [樓主]


    級別:騎士 ( 10 )
    發帖:2389
    威望:415 點
    金錢:7096 USD
    貢獻:300 點
    註冊: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等排列序号。


    點評

      TOP Posted: 12-29 16:00 #2樓 引用 | 點評
      条野佑长佐 [樓主]


      級別:騎士 ( 10 )
      發帖:2389
      威望:415 點
      金錢:7096 USD
      貢獻:300 點
      註冊: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: 12-29 19:21 #3樓 引用 | 點評
      条野佑长佐 [樓主]


      級別:騎士 ( 10 )
      發帖:2389
      威望:415 點
      金錢:7096 USD
      貢獻:300 點
      註冊: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.


      點評

        TOP Posted: 01-01 12:16 #4樓 引用 | 點評
        条野佑长佐 [樓主]


        級別:騎士 ( 10 )
        發帖:2389
        威望:415 點
        金錢:7096 USD
        貢獻:300 點
        註冊: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: 01-02 19:45 #5樓 引用 | 點評
        条野佑长佐 [樓主]


        級別:騎士 ( 10 )
        發帖:2389
        威望:415 點
        金錢:7096 USD
        貢獻:300 點
        註冊: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: 01-09 12:35 #6樓 引用 | 點評
        .:. 草榴社區 » 技術討論區


        電腦版 手機版 客戶端 DMCA
        用時 0.01(s) x3, 11-11 18:01