Переменная длина подстроки списка каталогов CMD

setlocal
set "s=DIR D:\MyFolder /S /Q ^|FIND /i "Owner" ^|FIND /v /i "sample" ^|findstr /m /i "\.mkv$""
for /f "Tokens=5,6*" %%a in ('%s%') do >>%tmp%\list.txt echo %%a %%b %%c
wscript "C:\my.vbs" 

Эй, ребята, у меня есть этот код. Получение mkv файлов, принадлежащих Владельцу из MyFolder. И показывает их через VBS.

И это мои файлы.

The.Leftovers.S01E02.720p.BLABLABLA
Falling.Skies.S04E03.720p.BLABLABLA

Я хочу ограничить длину до 20 букв. Или снимите перед 720p

The.Leftovers.S01E02
Falling.Skies.S04E03

Я прочитал несколько руководств, но не смог импортировать их в токены for /f. Можно ли это сделать? Если да, то как?

1 ответ

Решение

Вот пакетный файл, который будет перечислять содержимое текущего каталога, обрезая все имена до 20 символов.

SETLOCAL ENABLEDELAYEDEXPANSION
@echo off

for %%f in (*) do (
    set TMPF=%%f
    echo !TMPF:~0,20!

)

Для получения дополнительной помощи, запустите SET /? для получения справки о синтаксисе и примерах ~0,20, и CMD /? за то, что делает ENABLEDELAYEDEXPANSION и что !! делает.

Я не могу точно сказать, как это вписалось бы в ваш код, но может быть что-то вроде:

SETLOCAL ENABLEDELAYEDEXPANSION
for /f "Tokens=5,6*" %%a in ('%s%') do (
    set TMPA=%%a
    >>%tmp%\list.txt echo !TMPA:~0,20! %%b %%c
)
Другие вопросы по тегам