
Чтобы помочь моему ребенку выучить самые распространенные цвета, я сделала эту партию (это Windows 7, но я полагаю, что она такая же и в другой версии Windows):
@echo off
for %%a in (^
black ^
blue ^
green ^
gray ^
orange ^
pink ^
red ^
#82461F ^
#7E287E ^
white ^
yellow ^
) do ffplay -hide_banner -f lavfi -i color=%%a:160x90:d=3,format=rgb24 -fs
Все довольно просто: for
цикл выполняет каждую ffplay
команду по одной, заполняя мой экран 16:9 одним цветом до тех пор, пока ребенок не узнает цвет и не назовет его правильно; затем я нажимаю , qчтобы выйти из этого экземпляра, ffplay
и отображается следующий цвет.
Я разбиваю команду таким образом, чтобы иметь все значения цвета в строке и легко смешивать строки, когда мне это нужно, чтобы избежать необходимости заучивать определенный порядок.
Но это просто не работает. Если я правильно понял эти два вопроса...
- Длинные команды, разбитые на несколько строк в пакетном файле (.bat) Windows Vista
- Как разделить строку в двойных кавычках на несколько строк в пакетном файле Windows?
... поскольку каждый ^<new line>
исчезает из финальной команды, мой пакет эквивалентен одной строке интерпретатора командной строки...
for %a in (black blue green gray orange pink red saddlebrown violet white yellow ) do ffplay -hide_banner -f lavfi -i color=%a:160x90:d=3,format=rgb24 -fs
... что, само собой разумеется, работает идеально.
Что действительно работает, так это начало последней строки спространство. Но, несмотря на то, что найден способ заставить пакет работать, вопрос остается. Зачем это нужноэто пространство? Или что я упускаю из ответов на перечисленные вопросы?
Редактировать:
#82461F==коричневый
#7E287E==фиолетовый
Моя жена не была уверена в том, как эти два названных цвета выглядели на нашем дисплее.
Редактировать:
Для справки, окончательная рабочая партия (спасибо всем), с цветами в алфавитном порядке и без лишних знаков препинания и пробелов:
@echo off
for %%a in (
black
blue
#82461F %= brown %
gray
green
orange
pink
red
#7E287E %= violet %
white
yellow
) do ffplay -hide_banner -f lavfi -i color=%%a:160x90:d=3,format=rgb24 -fs
решение1
Вы можете опустить все символы продолжения строки, ^
они не нужны,
но поскольку последующие строки начинаются в первом столбце, это будет интерпретироваться как экранирование первого символа следующей строки — а это, я полагаю, не то, что вы имели в виду.
Это не вредит буквам, но экранирование закрывающих скобок — это другое дело.
Следующий пакет повторяет только команду для целей тестирования:
@echo off
for %%a in (black
blue
green
gray
orange
pink
red
#82461F
#7E287E
white
yellow) do echo ffplay -hide_banner -f lavfi -i color=%%a:160x90:d=3,format=rgb24 -fs
Пример вывода:
ffplay -hide_banner -f lavfi -i color=black:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=blue:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=green:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=gray:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=orange:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=pink:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=red:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=#82461F:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=#7E287E:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=white:160x90:d=3,format=rgb24 -fs
ffplay -hide_banner -f lavfi -i color=yellow:160x90:d=3,format=rgb24 -fs