[CMD] Обойти ограничение FOR

dukem

Новый пользователь
Сообщения
2
Реакции
0
Можно обойти неявные ограничения FOR ??
for each string:
@Echo Off
Set "Items="0,35" "57,5*60" "320,330""
For %%a In (%Items%) Do (
    Echo %Items% -- %%a
    REM Пропускает из обработки 2 элемент
    PAUSE
)
 
Здравствуйте.
Добро пожаловать на SafeZone!

В такой форме записи навряд ли. For интерпретирует * здесь как запрос на поиск файлов.
Можно через For /F с последовательным откусыванием, но придётся задействовать EnableDelayedExpansion, чтобы For воспринял входные данные как строку, а не набор файлов.

Если у вас в исходных данных знак ! не используется, то вам может подойти такой вариант:
CMD/BATCH:
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
Set "Items="0,35" "57,5*60" "320,330""
echo items = %items%
:do
For /f "tokens=1* delims= " %%a In ("!Items!") Do (
    Echo %%~a
    set "Items=%%b" & if "%%b" neq "" goto do
)
pause

items = "0,35" "57,5*60" "320,330"
0,35
57,5*60
320,330
 
Здравствуйте.
Благодарю за быстрый ответ, разъяснение и, конечно, сам урок.
Идеальный вариант решения найден.
ffmpeg -filter:v select='between(t,0,2*60)':
@Echo Off
Set "Items="0,35" "57,5*60" "320,330""
Set "filter=between(t,%%~a^)"
Echo items = %Items%
:do
For /f "usebackq tokens=1* delims= " %%a In ('%Items%') Do (
    Echo %filter% -- %%~a
    PAUSE
    Set "Items=%%b" & If "%%b" neq "" goto do
)
 
Назад
Сверху Снизу