如何批量使用多行txt文件在所有mp4文件上运行命令

问题描述

所以基本上我想做的是将文本文件的每一行用作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

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

解决方法

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"
    )
)

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

首先,使用.mp4创建现有dir的列表-由于您正在创建新的.mp4,因此可以防止重新处理新创建的文件。

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

对于找到的每个此类文件,
初始化counter,然后针对从keys文件读取的每一行,

颠倒计数器,并使用mp4decrypt文件中读取的%%b中的密钥,keys中文件的名称和扩展名执行%%a并构造仅来自%% a(%%~na)的名称部分的新名称和counter的当前值。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...