Hola a todos, estoy haciendo un juego en batch (nada complicado) y me surgio la siguiente duda:
Para el juego necesito crear un tablero con 225 zonas pulsables (botones) y a unas 15 lineas por boton, pues. os haceis una idea, asi que decidí crear un script que genere el código, de momento tengo esto:
@echo off
set val = 5
for %%a in (A B C D E F G H I J K L M N O) do (
for /L %%A in (1,1,15) do (
echo :Host_play_cmp_%%a%%A >> code.txt
echo set VERTICAL = %val% >> code.txt
echo set START = 10 >> code.txt
echo set STOP = 14 >> code.txt
echo set RETURN = Host_play_click%%a%%A >> code.txt
echo. >> code.txt
echo :Host_play_click%%a%%A_next >> code.txt
echo if %next%=="True" set click=%%a%%A & goto sendclick >> code.txt
echo goto Host_play >> code.txt
echo. >> code.txt
set /a val=%val%+1
)
pause
El resultado es el que debería, a excepción de que no imprime el contenido de la variable VAL y se salta la linea if %next%=="True" set click=%%a%%A & goto sendclick
Si alguien sabe como hacer que imprima lo que falta o porque no lo hace, pues le estaría tremendamente agradecido :D
Salu2 y gracias adelantadas.
Hola.
- La variable VAL no se imprime porque no estás usando la sintaxis correcta para setear.
Set VAL=5
(Sin espacios)
PD: Además necesitás expandir la variable en ese FOR.
- La linea se la "salta" porque no estás escapando los caracteres especiales...
echo if ^%%next^%%==^"True^" set click=^%%^%%a^%%^%%A ^& goto sendclick >> code.txt
De todas formas no te va a funcionar si no modificas un poco el code.
Está en una zona complicada (dentro de un FOR), Así que en vez de imprimir "%%a" imprimirá el contenido de la variable (A, B, C...) en el archivo de texto.
O con un call para salir del FOR y escribir esa linea.
For ... Do (
...
Call :Print
...
)
:Print
echo if ^%%next^%%==^"True^" set click=^%%^%%a^%%^%%A ^& goto sendclick >> code.txt
Goto :EOF
En resumen:
@echo off
Setlocal enabledelayedexpansion
Set VAL=5
for %%a in (A B C D E F G H I J K L M N O) do (
for /L %%A in (1,1,15) do (
echo :Host_play_cmp_%%a%%A >> code.txt
echo set VERTICAL = !val! >> code.txt
echo set START = 10 >> code.txt
echo set STOP = 14 >> code.txt
echo set RETURN = Host_play_click%%a%%A >> code.txt
echo. >> code.txt
echo :Host_play_click%%a%%A_next >> code.txt
Call :Print
echo goto Host_play >> code.txt
echo. >> code.txt
set /a val+=1
)
)
Pause
Exit
:Print
Echo IF ^%%next^%%==^"True^" set click=^%%^%%a^%%^%%A ^& goto sendclick >> code.txt
Goto :EOF
Además, una cosa aparte por si no lo sabes, Asegúrate de que el contenido de la variable %Next% séa True o "True", Las comillas también cuentan.
@Echo off
Set var=True
If %Var%==True (Echo sin comillas)
If %Var%=="True" (Echo con comillas)
pause
Salu2.
Gracias por responder tan rápido Elektro, ya conseguí solucionar el problema
;D
Podeis cerrar el tema