493292479吧 关注:4贴子:117

一些日用 bat 小脚本记录

只看楼主收藏回复

图文不相关
只是为了好看(不那么单调)


IP属地:安徽1楼2018-10-25 17:13回复
    【批量创建指定名字序列文件夹】
    for /l %%i in (1, 1, 100) do md "第%%i话"
    这个脚本是当初批量下载漫画的时候用的
    第一个“1”是“从1开始”,第二个“1”是“步数”(不懂的话看下面例子),“100”是“到100为止”
    【例子】
    for /l %%i in (5, 10, 55) do md "第%%i回"
    会新建“第5回”“第15回”“第25回”……“第55回”文件夹


    IP属地:安徽2楼2018-10-25 17:19
    回复(1)
      2025-10-17 21:54:49
      广告
      不感兴趣
      开通SVIP免广告
      【基于txt批量创建文件】
      @echo off
      set /p m=请输入文本文件名(无后缀):
      set /p n=请输入新建的文件后缀:
      for /f "usebackq delims=" %%i in ("%m%.txt") do (echo.>>"%%~i.%n%")
      【讲解】
      首先我需要新建一个test.txt,里面写上
      1
      2
      3
      4
      5
      然后在“请输入文本文件名(无后缀)”上输入“test”,然后在“请输入新建的文件后缀”上输入“tnt”,那就会批量生成1.txt、2.txt……5.txt 五个文件
      【我的应用】
      之前是在nyaa上下了一点OST,但是文件名全部是罗马音,于是我就上bangumi找到了相关曲目(日文曲目),文字复制下来,接着用上面那个脚本批量生成txt,最后用下面这个字幕文件批量改名工具以那一堆txt为“影片文件”,罗马音文件名OST为“字幕文件”,修改左下角的“字幕文件名后缀”,搞定!!
      可惜这只能改文件名,写在文件属性里的如“歌手”、“专辑名称”之类的我现在还是不知道该怎么批量改


      IP属地:安徽3楼2018-10-25 17:33
      回复(1)
        【有关文件名批量修改的脚本】
        注:其实不是很有必要用脚本,目前觉得用软件比bat方便多了,目前是用“拖把更名器”
        1、把目录下jpg全部重命名为bmp(只是举个例子,楼楼才不会干这么傻的事情哩)
        ren *.jpg *.bmp
        2、批量删除输入的文件名片段(这个只能针对当前目录,子文件夹内文件修改楼楼死活做不到,最后还是乖乖用软件了OTZ)
        set /p a=请输入要删除的内容:
        echo %a%
        @echo off& setlocal enabledelayedexpansion
        for /f "delims=" %%1 in ('dir /a /b') do (set wind=%%1
        ren "%%~1" "!wind:%a%=!")
        3、为无后缀文件添加自定后缀
        set /p m=请输入需要添加的后缀:
        for /r %%a in (*) do if "%%~xa"=="" ren "%%~a" "%%~na.%m%"


        IP属地:安徽4楼2018-10-25 17:41
        回复
          【gal拆包的时候用到的批量执行】
          for %%i in (*.dat) do arc_conv "%%i
          之前用arc_conv_r55、asmodean tools拆包的时候用到的,就是把上面那个的脚本等同于把dat后缀的文件用鼠标拖拽到arc_conv.exe去上执行


          IP属地:安徽5楼2018-10-25 17:45
          回复
            【ffmpeg批量重封装脚本】
            @echo
            @echo 开始视频转换过程
            @echo 按任意键开始,否则关闭执行窗口,或按Ctrl+C终止
            @pause
            for /r . %%a in (*.flv) do ffmpeg -i "%%~na.flv" -c copy "%%~na.mp4"
            【讲解】
            意思就是对目录下flv文件,执行“把flv导入ffmpeg并复制视频轨道与音轨后输出为mp4”
            -c copy = -c:a copy -c:v copy
            当然还有其他用法,百度ffmpeg使用教程,修改“-c copy”这段命令就有非常多种变化了,这里不赘述


            IP属地:安徽6楼2018-10-25 17:49
            收起回复
              【导出文件夹/文件的目录树】
              tree /f >tree.txt
              随便找一个文件夹(有东西的),试一下就知道了,有时候很方便


              IP属地:安徽7楼2018-10-25 17:53
              回复
                【ffmpeg无损拼合视频】
                ffmpeg -f concat -i tree.txt -c copy output.mp4
                【讲解】
                这个需要结合上面提到的“tree /f >tree.txt”命令来使用
                执行需要排好文件顺序的txt(放在),像这样:
                file 'input1.flv'
                file 'input2.flv'
                file 'input3.flv'
                这一步可以手动输入,不过楼楼个人比较喜欢用tree命令+写字板/word的“文本替换”功能来操作,不过前提是tree命令罗列出来的文件顺序符合你的需要的,万一文件名是1.mp4、2.mp4……99.mp4那就没办法咯


                IP属地:安徽8楼2018-10-25 18:02
                回复(2)
                  2025-10-17 21:48:49
                  广告
                  不感兴趣
                  开通SVIP免广告
                  【ffmpeg针对子文件夹下文件转换】
                  @echo off
                  for /f "delims=" %%i in ('dir /s /ad /b') do (
                  cd /d %%i
                  for /r . %%a in (*.png) do ffmpeg.exe -i "%%~na.png" "%%~na.jpg" -y
                  )
                  @pause
                  【讲解】
                  把包括子文件内的所有png转换为jpg(PS:ffmpeg出来的jpg质量好差啊,-q:v 1 了也好差,还是得用GalPhotoAuto之类的工具来批量转换OTZ)
                  后面有一个 -y 命令是因为如果有相同文件(重复的文件,只是单纯重名的话没问题)从ffmpeg被导出的话需要覆盖,哪怕路径不一样,否则会被终止且要一个个y按过去,那就干脆直接加一条吧,如果想顺便筛选重复文件的话可以删掉后面的“-y”


                  IP属地:安徽9楼2018-10-25 18:18
                  回复
                    【基于txt批量创建文件夹】(2、3楼的结合产物)
                    @echo off
                    set /p m=请输入文本文件名(无后缀):
                    for /f "usebackq delims=" %%i in ("%m%.txt") do md "%%~i"


                    IP属地:安徽10楼2018-11-16 12:52
                    回复
                      【用ffmpeg为mp4批量加入字幕】
                      @echo off(for /f "tokens=*" %%i in ('dir/b *.mp4') do (
                      echo ffmpeg.exe -i %%i -f srt -i %%~ni.srt -c:v copy -c:a copy -c:s mov_text %%~ni_new.mp4))>加字幕.bat
                      之后再运行那个“加字幕.bat”就好。
                      【变式:用ffmpeg为批量将同名flac与mp4封装为mkv】
                      @echo off
                      (for /f "tokens=*" %%i in ('dir/b *.mp4') do (
                      echo ffmpeg.exe -i "%%i" -f flac -i "%%~ni.flac" -c:v copy -c:a copy "%%~ni_new.mkv"))>封装.bat
                      然后运行“封装.bat”。


                      IP属地:安徽11楼2018-11-19 15:53
                      回复(1)
                        【将当前目录下的文件夹名称添加到文件夹内文件名前】
                        @Echo Off
                        For /f "tokens=*" %%i in ('dir /ad /b /s "%~dp0"') do (
                        For /f "tokens=*" %%j in ('dir /a-d /b /s "%%i\*.*"') do (
                        Ren "%%j.*" "%%~ni %%~nj.*"))
                        Pause


                        IP属地:安徽12楼2018-12-04 12:56
                        回复
                          【对指定片段消音】
                          ffmpeg -i a.mp3 -af "volume=enable='between(t,5,10)':volume=0, volume=enable='between(t,15,20)':volume=0" out.mp3
                          【解释】
                          对文件名为“a.mp3”的文件,于5s~10s、15s~20s处声音调为0,输出为“0.mp3”


                          IP属地:安徽13楼2019-01-14 09:53
                          回复
                            【不知道什么时候会有用的批量复制】
                            for /f "delims=" %%i in ('dir /s /ad /b') do (
                            cd /d %%i
                            for /r . %%a in (*.mp4) do (
                            copy "%%~na.mp4" %~dp0
                            【效果】
                            将当前文件夹下包括子文件夹内所有mp4文件复制一份到当前目录下
                            【重点】
                            “%~dp0” 为bat脚本所在目录的意思


                            IP属地:安徽14楼2019-01-14 16:44
                            回复
                              2025-10-17 21:42:49
                              广告
                              不感兴趣
                              开通SVIP免广告
                              【把所有png搞成视频并封装入一个m4a音频文件】
                              for /r . %%a in (*.png) do (
                              ffmpeg -i "%%~na.png" -i "介绍音乐.m4a" -vcodec libx264 -r 24 -t 00:00:05 -c:a copy "%%~na.mp4"
                              )
                              pause
                              【注】
                              好像无论 -t 后面写多少,最终输出都只有音频的长度(太长了的话直接播放时进度条00:00:00)


                              IP属地:安徽15楼2019-01-14 17:24
                              回复