Windows Toplu (CMD), kod golfü için muhtemelen en uygun dildir.
Yeni satır karakterlerinden kaçının . Karakterlerin aksine bayt cinsinden en kısa kodu arıyorsanız, tüm gereksiz satırbaşı değerlerinden (yeni satır karakterleri = 2 bayt) kurtulmak isteyeceksiniz. &
Her komut için bir bayt kırparak işlemi yapmak için işlemi kullanabilirsiniz .
echo Hello&echo World.
Değişkenleri ayarlama . Anahtarları kullanarak değişkenleri ayarlarken set
ayrıştırıcı boşlukları yok sayar.
set /a a+=1
set /p b="User Input: "
:: Will be handled the same as..
set/aa+=1
set/pb="User Input: "
Aynı ayrıştırıcı kurallarının tüm komutlar için geçerli olmadığını unutmayın - örnek olarak, döngüler için boşluk gerektirir. Arasında hariç set, string, or command
(yani neyi parantez içerisinde yer almaktadır) ve kelime do
.
for /f %%a in (file.txt)do ...
Basit matematiksel ifadeler . Ayrıca, set /a
komutta artırmak için kullandığım ifadeye dikkat edin . Basit matematiksel ifadeler için += -= *= /=
(örneğin) yerine kullanın set /a a=%a%+1
.
Komut çıktısını toplama . Bir komutun çıktısını almak için, bazen çıktıyı toplamak için bir for döngüsü kullanmış olabileceğiniz bir dosyaya çıktı almak ve dosyadan okumak yararlı olabilir:
for /f %%a in ('echo test') do set a=%%a
:: Can be shortened to
echo test>f&set/pa=<f
echo test
stdout'u f adlı bir dosyaya gönderin >f
, yeni bir komut başlatın &
ve dosyanın içeriğini bir değişkende alın set/pa=<f
. Açıkçası bu her zaman yararlı değildir. Ancak, ihtiyacınız olan tek şey tek bir çıktı satırı olduğunda olabilir.
Komut çıkışı . Komut çıktısını bastırırken, 9'dan fazla komutu @
bastırmanız gerekmedikçe komutlardan önce kullanın, bu durumda komut dosyanızın başında kullanın . 9 bayt uzunluğundadır ve bu nedenle genellikle daha uzun komut dosyalarıyla daha fazla bayt tasarrufu sağlar.@echo off
@echo off
Komutlar genellikle açık olandan daha fazlasını yapar - komutlarınızın ne yaptığını düşünün. Örneğin; bir değişken ayarlamanız ve bunun yerine başka bir değişkeni yankılamanız gerekiyorsa:
set a=OUTPUT
echo %a%
echo test>f
set /p b=<f
Sizin /p
için çıktı almak üzere set komutunu anahtarla birlikte kullanabilirsiniz %a%
.
set a=OUTPUT
echo test>f
set /p b=%a%<f
Tamamen golf oynadı ...
set a=OUTPUT&echo test>f&set/pb=%a%<f
Birkaç örnek - Tüm basamakların toplamını sayın - Goldbach'ın varsayımı .
Diğer ipuçları daha fazla takdir - başka bir şey düşünürseniz bu güncelleştirmeye devam edeceğiz.