Windows Batch (CMD) è probabilmente la lingua meno adatta per giocare a golf.
Evita i caratteri di nuova riga . Se stai cercando il codice più breve in byte, al contrario dei caratteri, ti consigliamo di eliminare tutti i ritorni a capo non necessari (caratteri di nuova riga = 2 byte). È possibile utilizzare l' &operazione per fare ciò, tagliando un byte per ciascun comando.
echo Hello&echo World.
Impostazione delle variabili . Quando si impostano le variabili utilizzando gli switch, il setparser ignorerà gli spazi.
set /a a+=1
set /p b="User Input: "
:: Will be handled the same as..
set/aa+=1
set/pb="User Input: "
Si noti che le stesse regole del parser non si applicano a tutti i comandi - ad esempio, per i loop richiedono spazi. Tranne tra set, string, or command(cioè ciò che è dentro le parentesi) e la parola do.
for /f %%a in (file.txt)do ...
Espressioni matematiche semplici . Inoltre, nota l'espressione che ho usato per incrementare il set /acomando. Per semplici espressioni matematiche utilizzare += -= *= /=invece di (ad esempio) set /a a=%a%+1.
Raccolta del comando in uscita . Per ottenere l'output di un comando, a volte può essere utile l'output e la lettura da un file, dove altrimenti si sarebbe potuto usare un ciclo for per raccogliere l'output:
for /f %%a in ('echo test') do set a=%%a
:: Can be shortened to
echo test>f&set/pa=<f
echo testinvia stdout a un file chiamato f, >favvia un nuovo comando &e ottieni il contenuto del file in una variabile set/pa=<f. Ovviamente questo non è sempre utile. Ma può essere quando tutto ciò che serve è una singola linea di output.
Uscita comando . Quando si sopprime l'output dei comandi, utilizzare @prima dei comandi, a meno che non sia necessario eliminare più di 9 comandi, nel qual caso, utilizzare @echo offall'inizio dello script. @echo offè lungo 9 byte e pertanto generalmente salverà più byte con script più lunghi.
I comandi spesso fanno molto di più di ciò che è ovvio : pensa a cosa stanno facendo i tuoi comandi. Per esempio; se è necessario impostare una variabile ed eseguire l'eco di un'altra variabile, anziché:
set a=OUTPUT
echo %a%
echo test>f
set /p b=<f
È possibile utilizzare il comando set con l' /popzione per l'output %a%per te.
set a=OUTPUT
echo test>f
set /p b=%a%<f
Completamente golf ...
set a=OUTPUT&echo test>f&set/pb=%a%<f
Un paio di esempi - Conta la somma di tutte le cifre - La congettura di Goldbach .
Tutti gli altri suggerimenti sono più che apprezzati: continuerò ad aggiornarlo se penso ad altro.