0

所以基本上我想要做的是将文本文件的每一行用作 mp4decrypt 中的密钥。因此,如果我为 Video.mp4 生成了 3 个密钥,它应该输出 Video_1.mp4、Video_2.mp4 和 Video_3.mp4。每个人都使用了 Keys.txt 中三个键中的一个。然后让它对目录中的所有 mp4 文件执行相同的操作。

我拥有的当前代码将在所有 mp4 上运行 mp4decrypt,但仅使用 keys.txt 文件中的最后一个密钥。并在处理的第一个文件上附加_1 _2 在处理的第二个文件上,依此类推。但是我需要它来输出文件,其中 Video.mp4 具有三个文件,其中 _1 到 _3 然后 Video2.mp4 将具有文件 _1 到 _3 等等。

我尝试使用嵌套的 for 循环,但它似乎不起作用,因为它无法读取 --key 了。

setlocal enabledelayedexpansion

set "counter=1"

for /f "delims=" %%b in (keys.txt) do set key=%%b
for /f "tokens=1 delims=." %%a in ('dir /B *.mp4') do (
    mp4decrypt --key %key% --show-progress "%%a.mp4" "%%a_!Counter!.mp4"
    set /a counter+=1
    )
endlocal

希望这是有道理的。我似乎无法让它按我想要的方式工作。

4

1 回答 1

1
setlocal enabledelayedexpansion

for /f "delims=" %%a in ('dir /B *.mp4') do (
    set /a counter=0
    for /f "delims=" %%b in (keys.txt) do (
        set /a counter+=1
        mp4decrypt --key %%b --show-progress "%%a" "%%~na_!Counter!.mp4"
    )
)

应该解决你的问题[未经测试]

首先,使用创建现有.mp4s的列表dir- 因为您正在创建新.mp4s,所以这可以防止重新处理新创建的文件。

"delims=" 将整个名称和扩展名应用于%%a

对于找到的每个此类文件,然后为从文件中读取的每一行
初始化,counterkeys

撞击计数器并执行使用从文件中读取mp4decrypt的键、文件的名称和扩展名并仅从 %%a ( ) 的名称部分和 的当前值构造新名称。%%bkeys%%a%%~nacounter

于 2020-11-08T05:43:05.207 回答