O Windows Batch (CMD) é provavelmente o idioma menos adequado para o golfe com código.
Evite caracteres de nova linha . Se você estiver procurando pelo código mais curto em bytes, em vez de caracteres, desejará se livrar de todos os retornos de carro desnecessários (caracteres de nova linha = 2 bytes). Você pode usar a &operação para fazer isso, aparando um byte para cada comando.
echo Hello&echo World.
Definindo variáveis . Ao definir variáveis usando opções, o setanalisador ignorará os espaços.
set /a a+=1
set /p b="User Input: "
:: Will be handled the same as..
set/aa+=1
set/pb="User Input: "
Observe que as mesmas regras do analisador não se aplicam a todos os comandos - como um exemplo, pois os loops requerem espaços. Exceto entre set, string, or command(ou seja, o que está dentro dos colchetes) e a palavra do.
for /f %%a in (file.txt)do ...
Expressões matemáticas simples . Além disso, observe a expressão que eu usei para incrementar no set /acomando. Para expressões matemáticas simples, use em += -= *= /=vez de (por exemplo) set /a a=%a%+1.
Reunindo saída de comando . Para obter a saída de um comando, às vezes pode ser útil enviar e ler um arquivo, onde você poderia ter usado um loop for para reunir a saída:
for /f %%a in ('echo test') do set a=%%a
:: Can be shortened to
echo test>f&set/pa=<f
echo testenvie stdout para um arquivo chamado f, >finicie um novo comando &e obtenha o conteúdo do arquivo em uma variável set/pa=<f. Obviamente, isso nem sempre é útil. Mas pode ser quando tudo que você precisa é de uma única linha de saída.
Saída de comando . Ao suprimir a saída do comando, use @antes dos comandos, a menos que você precise suprimir mais de 9 comandos; nesse caso, use @echo offno início do seu script. @echo offtem 9 bytes de comprimento e, portanto, geralmente salva mais bytes com scripts mais longos.
Os comandos geralmente fazem mais do que apenas o óbvio - pense no que seus comandos estão fazendo. Por exemplo; se você precisar definir uma variável e repetir outra variável, em vez de:
set a=OUTPUT
echo %a%
echo test>f
set /p b=<f
Você pode usar o comando set com a /popção de saída %a%para você.
set a=OUTPUT
echo test>f
set /p b=%a%<f
Completamente jogado ...
set a=OUTPUT&echo test>f&set/pb=%a%<f
Um par de exemplos - Contagem da soma de todos os dígitos - conjectura de Goldbach .
Quaisquer outras dicas são mais do que apreciadas - continuarei atualizando isso se pensar em outra coisa.