Как отфильтровать переменные, если они содержат указанную строку c в пакете - PullRequest
0 голосов
/ 20 февраля 2020

Сейчас я пытаюсь go просмотреть историю просмотров на YouTube, чтобы найти видео, которое я смотрел годами go, однако я не знаю его названия. Я перенес всю свою историю в текстовый файл, поэтому я могу загрузить текстовый файл и установить «массивы» для каждого видео (имя, создатель, дата и время его просмотра). Прямо сейчас у меня есть программа, которая будет принимать пользовательскую строку ввода

set /p checkString=

и затем запускать ее для всех переменных заголовка (которые могут включать ЛЮБОЙ символ, специальный символ, пробелы и даже unicode) одна из переменных заголовка будет выглядеть следующим образом: «Наблюдение за РАБОТОЙ JAN 2020 ? Соло Пропустить ВСЕ миссии по установке ограбления Судного дня ? 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 видео

1 Ответ

0 голосов
/ 21 февраля 2020

В итоге я использовал:

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

Этот первый бит перед сравнением удаляет любой экземпляр% в% в строке! Var !. Символ «x» добавляется с обеих сторон, чтобы ничто не мешало пустым переменным et c Это было опубликовано как ответ на другой вопрос пользователем paxdiablo . Я думаю, что он / она описывает это намного лучше, если вы хотите взглянуть на оригинал, вот ссылка: «Оригинальный» пост и ответ

...