无法获取任务列表批处理文件以输出子字符串

Cant get tasklist batch file to output substring

不是真正的批处理文件用户(这里更像是 python 人)想要获得输出以仅在 MS Edge YouTube 选项卡中显示视频标题(最终到 txt 文件中,但我是一步一个脚印,不想浪费太多人的时间在这里问问题。但我花了 5 个小时调试和搜索子字符串的工作原理)

我做的测试批次是

@ECHO OFF
SET LIST=tasklist /fi "imagename eq msedge.exe" /fo list /v 
SET TITLE=%LIST%|findstr YouTube
SET OUTPUT=%TITLE:~14,-39%
ECHO %OUTPUT%

给予

~14,-39%


参考示例

tasklist /fi "imagename eq msedge.exe" /fo list /v | findstr YouTube

在cmd中提示给了我

Window Title: Skyline Drive & The Polaris Airship - Sunrise Over Sterling [Silk Music] - YouTube - Personal - Microsoft? Edge

但是,如果有人知道如何获取 Windows 10 音乐吐司通知区域并将其放入文本文件中,而不必使用任务列表的 WINDOWTITLE 部分,那就太棒了。即使是 Node.js、Python 或任何我可以在 Win 10 中启动的低强度。

批量 set variable=command 不起作用。它将文字字符串分配给变量,而不是命令的输出。为此,您需要一个 for /f 循环:

for /f "delims=" %%a in ('tasklist /fi "imagename eq msedge.exe" /fo list /v ^| findstr YouTube') do set "title=%%a"
echo %title:~14,-39% >> /Desktop/title.txt

通常,您可以使用适当的 tokensdelims 定义输出的哪一部分 return(参见 for /?),但在这种情况下,它更好获取整行并 post-process 它,因为令牌在不同语言中有所不同(英语:Window title(两个令牌),德语:Fenstertitel(一个令牌))