如何批量使用多行txt文件对所有mp4文件执行运行命令
How to run command on all mp4 files using txt file with multiple lines in batch
所以基本上我要做的是将文本文件的每一行用作 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"
)
)
应该可以解决您的问题[未测试]
首先,使用 dir
创建现有 .mp4
的列表 - 因为您要创建新的 .mp4
,这会阻止重新处理 newly-created 文件。
“delims=”将整个 name-and-extension 应用于 %%a
对于找到的每个这样的文件,
初始化 counter
然后对于从 keys
文件中读取的每一行,
使用从 keys
文件中读取的 %%b
中的密钥、%%a
中文件的 name-and-extension 来增加计数器并执行 mp4decrypt
并仅从 %%a (%%~na
) 的名称部分和 counter
.
的当前值构造新名称
所以基本上我要做的是将文本文件的每一行用作 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"
)
)
应该可以解决您的问题[未测试]
首先,使用 dir
创建现有 .mp4
的列表 - 因为您要创建新的 .mp4
,这会阻止重新处理 newly-created 文件。
“delims=”将整个 name-and-extension 应用于 %%a
对于找到的每个这样的文件,
初始化 counter
然后对于从 keys
文件中读取的每一行,
使用从 keys
文件中读取的 %%b
中的密钥、%%a
中文件的 name-and-extension 来增加计数器并执行 mp4decrypt
并仅从 %%a (%%~na
) 的名称部分和 counter
.