Windows Batch (CMD) est probablement le langage le moins approprié pour jouer au code.
Évitez les caractères de nouvelle ligne . Si vous recherchez le code le plus court en octets, par opposition aux caractères, vous voudrez vous débarrasser de tous les retours chariot inutiles (caractères de nouvelle ligne = 2 octets). Vous pouvez utiliser l' &
opération pour ce faire, en supprimant un octet pour chaque commande.
echo Hello&echo World.
Définition des variables . Lors de la définition de variables à l'aide de commutateurs, l' set
analyseur ignorera les espaces.
set /a a+=1
set /p b="User Input: "
:: Will be handled the same as..
set/aa+=1
set/pb="User Input: "
Notez que les mêmes règles d'analyse ne s'appliquent pas à toutes les commandes - par exemple, pour les boucles nécessitent des espaces. Sauf entre set, string, or command
(c'est-à-dire ce qui est à l'intérieur des crochets) et le mot do
.
for /f %%a in (file.txt)do ...
Expressions mathématiques simples . Notez également l'expression que j'ai utilisée pour incrémenter dans la set /a
commande. Pour des expressions mathématiques simples, utilisez += -= *= /=
plutôt (par exemple) set /a a=%a%+1
.
Collecte de la sortie de commande . Pour obtenir la sortie d'une commande, il peut parfois être utile de sortir et de lire à partir d'un fichier, où vous auriez sinon pu utiliser une boucle for pour rassembler la sortie:
for /f %%a in ('echo test') do set a=%%a
:: Can be shortened to
echo test>f&set/pa=<f
echo test
envoyer stdout dans un fichier appelé f, >f
démarrer une nouvelle commande &
et obtenir le contenu du fichier dans une variable set/pa=<f
. Évidemment, ce n'est pas toujours utile. Mais cela peut être lorsque tout ce dont vous avez besoin est une seule ligne de sortie.
Sortie de commande . Lors de la suppression de la sortie des commandes, utilisez @
avant les commandes, sauf si vous devez supprimer plus de 9 commandes, auquel cas utilisez-les @echo off
au début de votre script. @echo off
est de 9 octets de long et économisera donc généralement plus d'octets avec des scripts plus longs.
Les commandes font souvent plus que ce qui est évident - pensez à ce que font vos commandes. Par exemple; si vous devez définir une variable et faire écho à une autre variable, au lieu de:
set a=OUTPUT
echo %a%
echo test>f
set /p b=<f
Vous pouvez utiliser la commande set avec le /p
commutateur pour sortir %a%
pour vous.
set a=OUTPUT
echo test>f
set /p b=%a%<f
Entièrement golfé ...
set a=OUTPUT&echo test>f&set/pb=%a%<f
Quelques exemples - Compter la somme de tous les chiffres - Conjecture de Goldbach .
Tout autre conseil est plus qu'apprécié - je continuerai à le mettre à jour si je pense à autre chose.