问题描述
并不是一个真正的批处理文件用户(这里更像是一个 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 音乐 Toast 通知区域并将其放入文本文件中,而不必使用任务列表的 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
通常,您可以使用适当的 tokens
和 delims
(参见 for /?
)定义返回的输出部分,但在这种情况下,最好获取整行并对其进行后处理,因为不同语言中的标记不同(英语:Window title
(两个标记),德语:Fenstertitel
(一个标记))