Я нашел функциональный подход для определения подстроки внутри переменной (см. Ниже ===========). Кажется довольно громоздким способом выполнения простой функции типа InStr().Пакет: проверка подстроки в переменной
Есть ли лучший способ?
@echo off
setlocal enabledelayedexpansion
::Metadata Creation ::
set File1=filelist.txt
set File2=filelist2.txt
cd\users\mark\downloads\media
::List current \Media files
dir /s/b *.mp4 *.mkv *.m4v > %File1%
::Write metadata
for /f "tokens=*" %%a in (%File1%) do (
:: Full path, no filename
set myPath=%%~dpa
:: Parent folder
for %%b in ("!myPath:~0,-1!") do set "myParent=%%~Nb"
rem ==InStr() type function============
:: If myParent variable contains the substring, replace
Set stemp=!myParent!
Set sstr=photo
Set pos=0
:loop
Set /a pos+=1
echo !stemp!|FINDSTR /i /c:!sstr! >NUL
if errorlevel 1 (
Set stemp=!stemp:~1!
if defined !stemp! GOTO loop
Set pos=0
)
if !pos! NEQ 0 (set myParent=Photo_Podcast)
rem =============================
С благодарностью Скотт - я не совсем понял цель «петли». Вы правы, меня не интересует позиция подстроки. Я пытаюсь заменить в своем пакетном файле сейчас и отчитаю свой результат. –
вместо% errorlevel% с! Errorlevel! делает работу. - благодаря! –
Примечание: Я ищу пути ~, содержащие ~ подстроку –