首页 > 解决方案 > 如果变量包含批处理中的特定字符串,如何过滤变量

问题描述

现在我正试图通过我的 YouTube 观看历史找到我多年前观看的视频,但我不知道它的标题。我将所有历史记录都保存到一个文本文件中,因此我可以加载文本文件并为每个视频(名称、创建者以及观看日期和时间)设置“数组”。现在我有一个程序将接受用户输入字符串

set /p checkString=

然后在所有标题变量(可能包括任何字符、特殊字符、空格甚至 unicode)上运行它,其中一个标题变量将完全如下:“Watched WORKING JAN 2020 Solo Skip ALL Doomsday Heist Setup Missions Easy Glitch | PS4 XBOX1 GTA Online"

echo !currentVideoTitle! | findstr /i "%checkString%" >nul & if errorlevel 1 (
    echo Title contains match
) else (
    echo Title doesn't contain match
)

通过使用该命令,它只返回错误级别 1,我知道通过某种程度的操作,我想要的结果是可能的,例如

if !currentVideoTitle:~%loopCount%,%checkStringLength%!==!checkString!

但是当我对大约 15k 视频进行分类时,这会慢很多

标签: sortingbatch-filefindstr

解决方案


我最终使用:

if not "x!var:%in%=!"=="x!var!" (
echo Contains match
) else (
echo Contains match
)

比较之前的第一位删除字符串 !var! 中任何 %in% 的任何实例。“x”被添加到任一侧,以确保不会与空变量等混淆。这是用户paxdiablo对另一个问题的回答。我认为如果您想查看原始链接,他/她会更好地描述它: “原始”帖子,然后回答


推荐阅读