批处理文件从文本文档中提取变量

时间:2015-07-22 07:03:06

标签: variables batch-file

我正在重新制作一堆视频。一旦我将它们重新组合,它们都有我需要实现的不同音频偏移。我有一个批处理文件,它将遍历文件夹中的每个文件并执行一个偏移。但是,我想将它放入文本文档(Offsets.txt)并从中提取信息。

这是我的" Offsets.txt"

Bio Broly.mkv: +1.112450
Bojack Unbound.mkv: +1.034330
Broly Second Coming.mkv: -1.166504
Broly Legendary Super Saiyan.mkv: +1.3140975
Coolers Revenge.mkv: +.032810
Dead Zone.mkv: +0
Fusion Reborn.mkv: .944 Seconds

这是我的" AV Sync Fix.bat"

@echo off
set /P Delay=What is the delay you would like to use?
set /P Track=What track would you like to change?
for %%i in (*.mkv) do "C:\Program Files (x86)\MKVToolNix\mkvmerge.exe" -o output/"%%i" -y %track%:%delay% "%%i"
Echo Your files were moved to a folder called output. Press ENTER to quit:
pause
Exit

我希望它可以运行"对于"每个视频行的命令,自动填写延迟。我仍然想手动放入赛道。

只是为了确保我说得对。我想启动批处理文件,仍然在轨道中进行更改,然后它将运行" for"命令在每个mkv文件上,并为每个文件使用相应的延迟。我是3个文件,还是80个文件。它只会在该列表中的文件上运行。

提前致谢!

1 个答案:

答案 0 :(得分:0)

  

它只会在该列表中的文件上运行。

好的,那么你应该枚举列表,而不是*.mkv

@echo off
set /P Track=What track would you like to change?
for /f "usebackq delims=" %%O in ("offsets.txt") do (
    for /f "delims=: tokens=1,2" %%a in ("%%O") do (
        "C:\Program Files (x86)\MKVToolNix\mkvmerge.exe" -o output/"%%a" -y "%Track%:%%b" "%%a"
        echo:&echo:&echo:
    )
)
pause

同步偏移量应以毫秒为单位(请参阅mkvmerge文档),除非您希望通过有限的批处理文件整数算法处理浮点数。