问题描述
所以基本上我想做的是将文本文件的每一行用作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
的当前值。