从 findstr 输出中排除前 20 个字符

Exclude first 20 characters from findstr output

我正在为自己批量制作一个电影管理器,可以轻松管理我的电影。 该程序的主要思想很简单,我使用该程序将电影添加到我的图书馆(这是一个 txt 文件),然后我可以查看电影的详细信息并通过该程序观看电影。我基本上都做了,但我仍然有 1 个问题。

之前说过,添加到库中的电影保存在文本文件中,如下所示:

Name: Test1
Year: Test1
Desc: Test1
MovieNumber1 Path: C:\Users\danie\Desktop\Movie1.mp4
----------------------------------------------------------------
Name: Test2
Year: Test2
Desc: Test2
MovieNumber2 Path: C:\Users\danie\Desktop\Movie2.mp4
----------------------------------------------------------------
Name: Test3
Year: Test3
Desc: Test3
MovieNumber3 Path: C:\Users\danie\Desktop\Movie3.mp4
----------------------------------------------------------------

要观看电影,用户需要在路径旁边输入电影编号(我知道这不是最好的主意,但它确实可以)。

我想获取路径并将其放入一个变量中,这样我就可以使用该变量通过批处理文件在媒体播放器中播放电影。

我写了以下内容来完成这项工作,但我还有一件事我不知道该怎么做:

set /p moviechoice=Select Movie


FOR /F "tokens=* USEBACKQ" %%F IN (`findstr "MovieNumber%moviechoice%" Movies.txt`) DO (
SET selectedmovie=%%F
)

echo You selected %selectedmovie% 
PAUSE

基本上,moviechoice 变量让程序知道要打开哪部电影。如果用户想观看第 2 部电影,则输入应该是一个数字,例如 2。

我正在使用 findstr 命令查找“MovieNumber”,然后是用户在最后一个变量中的输入。因此,如果用户输入“3”,该命令应搜索“MovieNumber3,因为它写在 txt 文件中。

到目前为止一切正常,但我需要“selectedmovie”变量只包含路径,而不是前面的文本。例如,变量应该是“C:\Users\danie\Desktop\Movie1.mp4”而不是“MovieNumber1 路径:C:\Users\danie\Desktop\Movie1.mp4”。我想排除前 20 个字符。

我该怎么做?

Full Code of the Project Here

我真的找到了这个问题的答案。

我只是添加了 tokens=3*,它在忽略前 2 个单词(MovieNumber1 和 Path:)后选择所有字符