2017-09-07 1 views
0
@echo off 
mode 1000 
goto block1 


:block1 
echo color 
goto block2 


:block2 
pause 
set /a num=%random% %%5 
goto 0 

:0 
if num == 0 goto a 
goto 1 


:1 
if num == 1 goto b 
goto 2 


:2 
if num == 2 goto c 
goto 3 


:3 
if num == 3 goto d 
goto 4 


:4 
if num == 4 goto e 
goto 5 


:5 
if num == 5 goto f 
goto 0 

:a 
color 0a 
goto block2 


:b 
color 0b 
goto block2 


:c 
color 0c 
goto block2 


:d 
color 0d 
goto block2 


:e 
color 0e 
goto block2 


:f 
color 0f 
goto block2 

Je veux faire un signe de couleur qui change de couleur et je voudrais utiliser quelque chose comme ça. mais je ne peux pas utiliser d'autre dans le lot et il aurait besoin de quelque chose comme çacomment utiliser quelque chose comme si et dans le lot

+0

Que demandez-vous exactement, et ce qui ne fonctionne pas avec cela? –

+0

Copie possible de [Comment utiliser la structure if - else dans un fichier batch?] (Https://stackoverflow.com/questions/11081735/how-to-use-if-else-structure-in-a-batch-file – Alejandro

+0

Dans les fichiers batch la syntaxe pour faire référence à un nom de variable (num') diffère de la syntaxe pour obtenir le contenu de la variable (% num% ') –

Répondre

0
  • Du point de vue du lot presque tous les goto s sont inutiles et que résultat dans le code spaghetti.
  • Vous savez qu'un effet de couleur affecte l'ensemble de l'écran?
  • %random% module 5 ne peut retourner 0..4

Votre code raccourci:

@echo off 
mode 1000 
echo color 
:block2 
pause 
set /a num=%random% %%5 
if %num% == 0 color 0a 
if %num% == 1 color 0b 
if %num% == 2 color 0c 
if %num% == 3 color 0d 
if %num% == 4 color 0e 
goto block2 
+0

Simpler: initialise' set 'color = abcde "' puis utilise ' color! color: ~% num%, 1! 'à la place de tous les' if' (avec Expansion retardée activée). – Aacini

+0

C'était aussi ma première pensée, mais je voulais rester avec le code simple de OP @Aacini – LotPings