Neden / in / do için bu multiline toplu halde çalışmıyor?


1

Çocuğumun en yaygın renkleri öğrenmesine yardımcı olmak için, bu toplu işlemi yaptım (Windows 7'dir, ancak sanırım başka bir Windows sürümünde aynıdır):

@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

Oldukça basit: for döngü her çalışır ffplay çocuk rengi tanıyana ve iyi isimlendirene kadar tek seferde 16: 9 ekranımı tek bir renkle doldurmak; sonra basarım q bu örneğinden çıkmak için ffplay ve bir sonraki renk görüntülenir.

Komutu kırdım, böylece belirli bir sıranın öğrenilmesini önlemek için gerektiğinde çizgileri kolayca karıştırmak için çizgideki her renk değerine sahip olabiliyorum.

Ama sadece işe yaramıyor. Bu iki sorudan haklı çıkarsam ...

... herşeyden beri ^<new line> son komuttan kaybolur, toplu işim komut satırı yorumlayıcısına tek satıra eşittir ...

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

... söylemeye gerek yok, mükemmel çalışıyor.

Ne işe yarıyor son satır başlıyor bir boşluk . Ancak, toplu iş yapmanın bir yolunu bulmak rağmen, soru kalır. Neden gerekli o alan ? Ya da listelenen soruların cevaplarında ne eksikim?

Düzenle:
# 82461F == kahverengi
# 7E287E == menekşe
Eşim, bu iki adlandırılmış rengin ekranımızda nasıl göründüğüne ikna olmadı.

Düzenle:
Başvuru için, son çalışma grubu (tümü için teşekkürler), alfabetik olarak sıralanan renkler ve gereksiz kareler ve boşluklar olmadan:

@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

Tam olarak hangi alana atıfta bulunuyorsunuz?
DavidPostill

@ cdlvcdlv Neden sonra boşluk soruyor musun yellow ) Bu gerekli veya başka bir boşluk mu? Bu boşluk aslında sonra gerekli değildir yellow değer ve hemen önce ) Döngünün bu bölümünde Ayrıca, LotPings'in cevabına göre, gerçekten başlayabilirsiniz. black çizginin altındaki for %%a in ( eğer istersen ve yapsansa, bu şekilde iyi çalışması gerekir. for %%a in (black Aynı satırda ancak şapka işaretlerini kesin olarak kaldırın. Hala biraz kafam karıştı ama belki bu size yardımcı olacak ve LotPings'in cevabına katkı sağlayacak.
Pimp Juice IT

Her satırın sonuna boşluk ekliyordum çünkü parantez arasındaki değerleri ayırmanın gerekli olduğunu düşündüm (tıpkı bir satırda komutu yazarken olduğu gibi). Ben bilmiyordum for komutu birkaç satıra bölünebilir (W2K'dan beri kullanıyorum ve bunu asla bulamadım). Tek yaptığım tek çizgiyi bölmek için şapka kullanmaktı. for. Boşluğu son değere koydum çünkü satırları daha sonra karıştırmayı düşündüm ve (yanlış) o zaman başarısız olacağını düşündüm.
cdlvcdlv

Yanıtlar:


1

Tüm satır devam çizelgelerini atlayabilirsiniz. ^ gerekli değiller
ama ilk sütunda başlayan satırları takip ederken, bu satırın ilk satırından kaçmak olarak yorumlanır - sandığınızdan değil.

Harflere zarar vermez, ancak parantez içindeki parantezlerden kaçmak farklı bir şeydir.
Aşağıdaki parti sadece test amaçlı komutu tekrarlar:

@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

Örnek çıktı:

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

Şapkalara ihtiyacın olduğunu bilmiyordum, kelimeler arasındaki boşluklara bile değil (yeni satırlar yeterli). Şimdi bahsettiğinize göre, bir cevapta satır sonundaki satırların hem kareyi hem de yeni satırı sildiğini ve AND sonraki karakterden kaçtığını söylüyorlar. Yani sorun buydu: Eğer parantez içindeki parantezlerden kaçarsanız, komuttaki anlamını kaybeder ve anlamsal olarak başarısız olur. İlginçtir ki echo on yanlış sürümde görmüyorsunuz herhangi bir komut (yanlış komutu ve sonra tercümanın şikayetini görmeyi beklersiniz).
cdlvcdlv
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.