批处理笔记(10) - 批量剪辑音频

需要ffmpeg,配置ffmpeg到环境变量。

应用场景:购买了一个专辑的有声文件,音轨上固定时间有广告之类的插入,去除掉它。

这里展示的是去掉开头部分,提前设置好起始时间,务必备份好原始音频数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
@echo off
@REM @Author: [email protected]
title 音频剪辑操作 by:小可([email protected])
SETLOCAL ENABLEDELAYEDEXPANSION

:GTBegin
cls
@echo 音频剪辑操作(提前设置好起始时间,备份好原始音频数据)
@echo --------------------------------------------
set /p HandleDir=需要处理的目录:

:GTCONTINUE
cls
@echo 音频剪辑操作
@echo --------------------------------------------
@echo 处理的目录:%HandleDir%
@echo.
@echo -----------------1.相同时间段剪辑-----------------
@echo 11 - 剪辑当前目录
@echo 12 - 剪辑层级子目录
@echo -------------------其它-------------------
@echo 8 - 重新选择目录
@echo 9 - 退出
@echo.
set GTOperator=9
set /p GTOperator="选择操作数: "
@echo.

if %GTOperator% equ 11 goto GTDIRPREFIX
if %GTOperator% equ 12 goto GTSUBDIRPREFIX

if %GTOperator% equ 8 goto GTBegin
if %GTOperator% equ 9 goto GTExit

echo 请选择正确的操作数
pause >nul
goto GTCONTINUE

rem @echo 不能做文件名称的字符
rem @echo \ / : * ? " < > |

rem 11.当前目录:目录名-文件名
:GTDIRPREFIX
cd /d "!HandleDir!"
for /f "delims=" %%i in ('dir /a-d /b *.MP3 2^>nul') do (
if not "%~nx0"=="%%i" (
ffmpeg -ss 00:00:47.666 -i "%%nxi" -acodec copy "O%%~nxi"
)
)
echo 搞定
pause >nul
goto GTCONTINUE

rem 12.子目录:子目录名-文件名
:GTSUBDIRPREFIX
cd /d "!HandleDir!"
for /f "usebackq" %%i in (`dir /ad /b /s^|sort /r`) do (
for /f "usebackq delims=" %%j in (`dir /a-d /b "%%i\*.MP3" 2^>nul`) do (
ffmpeg -ss 00:00:47.666 -i "%%i\%%j" -acodec copy "%%i\%%~nxi-O%%~nxj"
) )
echo 搞定
pause >nul
goto GTCONTINUE


:GTExit
exit

(本篇结束)

许可协议:自由转载-保持署名-非商业性使用-禁止演绎 (CC BY-NC-ND 4.0)

By 小可 from https://xinlu.ink/tech/batch-in-action-10-multiple-audioclips.html