Batch file 使用.bat提取两个单词之间的文本

Batch file 使用.bat提取两个单词之间的文本,batch-file,cmd,Batch File,Cmd,我有一个媒体服务器,我正在尝试使用MakeMKV自动翻录我的电影集和任何未来的电影。翻滚和移动工作顺利。我遇到的问题是,有时MakeMKV没有为mkv分配标题,我最终得到的标题是title00.mkv,Media Center主机显然甚至无法开始尝试匹配任何元数据 MakeMKV确实提供了从光盘中获取信息的功能,我将其打印到info.txt,看起来像这样 MSG:1005,0,1,"MakeMKV v1.8.10 win(x64-release) started","%1 started","M

我有一个媒体服务器,我正在尝试使用MakeMKV自动翻录我的电影集和任何未来的电影。翻滚和移动工作顺利。我遇到的问题是,有时MakeMKV没有为mkv分配标题,我最终得到的标题是
title00.mkv
,Media Center主机显然甚至无法开始尝试匹配任何元数据

MakeMKV确实提供了从光盘中获取信息的功能,我将其打印到
info.txt
,看起来像这样

MSG:1005,0,1,"MakeMKV v1.8.10 win(x64-release) started","%1 started","MakeMKV v1.8.10 win(x64-release)"
DRV:0,2,999,1,"HD-DVD-ROM HL-DT-ST BD-RE  GGW-H20L YL05","FARFROMHOME_16X9","\\Device\\CdRom0"
DRV:1,256,999,0,"","",""
DRV:2,256,999,0,"","",""
DRV:3,256,999,0,"","",""
DRV:4,256,999,0,"","",""
DRV:5,256,999,0,"","",""
DRV:6,256,999,0,"","",""
DRV:7,256,999,0,"","",""
DRV:8,256,999,0,"","",""
DRV:9,256,999,0,"","",""
DRV:10,256,999,0,"","",""
DRV:11,256,999,0,"","",""
DRV:12,256,999,0,"","",""
DRV:13,256,999,0,"","",""
DRV:14,256,999,0,"","",""
DRV:15,256,999,0,"","",""
FARFROMHOME_16X9
是光盘的标签

makemkv
完成时,我如何提取并重命名.mkv

这是迄今为止我的球棒(我第一次尝试.BAT):


在移动之前重命名文件将是理想的。

尽管您发布了关于问题和数据的详细描述,但您尚未解释您希望得到的结果,因此我必须猜测几点。下面几行从info.txt文件的第二行提取第六个逗号分隔的标记:

for /F "skip=1 tokens=6 delims=," %%a in (info.txt) do set "discLabel=%%~a" & goto continue
:continue
echo The label of the disk is: %discLabel%
这是对示例数据执行前几行时的输出:

The label of the disk is: FARFROMHOME_16X9
您还没有指定要重命名的文件的名称(在移动它之前)。以下是您的问题的可能解决方案,在定义以前的不明确点时,应进行调整:

makemkvcon64 -r info disc > info.txt
for /F "skip=1 tokens=6 delims=," %%a in (info.txt) do set "discLabel=%%~a" & goto continue
:continue
makemkvcon64 --minlength=3600 mkv disc:0 all C:\Users\HTPC1\MakeMKV_Temp\
START /WAIT makemkvcon64.exe
cd "c:\Program Files (x86)\FreeEject\"
FreeEject d:
ren C:\Users\HTPC1\MakeMKV_Temp\TheNameHere.mkv %discLabel%.mkv
move C:\Users\HTPC1\MakeMKV_Temp\*.mkv C:\Users\HTPC1\Movies\

我一直在争论同一件事,并创造了一些相当好的工作

MakeMKV使用它自己的输出文件名,就像您指出的“title00.mkv”或类似的东西一样

我已经创建了两(2)个批处理文件来执行我的家庭电影自动化。 第一个是“RipWorkflow_DVD.bat”,它处理所有繁重的工作,首先调用MakeMKV将内容撕到我的驱动器上。在这个文件中还有一个调用Handbrake将MKV转换为MP4(我的愚蠢的“智能”电视不会播放MKV,但喜欢MP4)

第二个批处理文件“onestepdvrip.bat”调用第一个批处理文件,但使用我为其选择的参数 a) MKV的位置 b) 我的MP4的输出名称 c) 要定位并撕裂至MKV的轨道的最小长度

这是“OneStepDVDRip.bat”的代码

这是“Ripu DVD.bat”的代码


谢谢你,阿奇尼!对不起,我不清楚这些要点。伟大的假设仍然存在。MakeMKV生成它自己的文件名。有时是光盘标题,但通常是某种形式的标题###.mkv。考虑到MakeMKV完成后temp目录中应该只有一个.mkv,我认为用*.mkv.Yes替换namehere.mkv应该是安全的,只要只有一个扩展名为.mkv的文件
makemkvcon64 -r info disc > info.txt
for /F "skip=1 tokens=6 delims=," %%a in (info.txt) do set "discLabel=%%~a" & goto continue
:continue
makemkvcon64 --minlength=3600 mkv disc:0 all C:\Users\HTPC1\MakeMKV_Temp\
START /WAIT makemkvcon64.exe
cd "c:\Program Files (x86)\FreeEject\"
FreeEject d:
ren C:\Users\HTPC1\MakeMKV_Temp\TheNameHere.mkv %discLabel%.mkv
move C:\Users\HTPC1\MakeMKV_Temp\*.mkv C:\Users\HTPC1\Movies\
    call "C:\Users\Todd\Desktop\RipWorkflow_DVD.bat" "Z:\Video\TrueStory" "E:\My Videos\Movies\Drama\True Story (2015).mp4" 3600
@echo off
cls
setlocal ENABLEDELAYEDEXPANSION

SET input=%1
SET output=%2
SET minlength=%3
echo
echo %input%
echo %output%
echo

if not exist %input% ( mkdir "%input%" )
call "C:\Program Files (x86)\MakeMKV\makemkvcon64.exe" --minlength=%minlength% --decrypt mkv disc:0 0 "%input%
timeout /t 5 /nobreak

for %%F in (%input%\*.mkv) do (
echo %%~dpnxF
echo %output%

call "C:\Program Files\Handbrake\HandbrakeCLI.exe" -v1 -i %%~dpnxF --main-feature -o %output% -f mp4 --markers -e x264 -b 2000 -a 1 -E faac -6 dpl2 -R 44.1 -B 128 -D 1.75 --subtitle-forced -x ref=2:bframes=2:subme=6:mixed-refs=0:weightb=0:8x8dct=0:trellis=0

timeout /t 5 /nobreak
DEL %%F /Q
)
endlocal