alguien controla los archivos .bat? dejar espacio

estoy creando un bat y quiero que una frase salga por el medio del cmd pero no hay manera siempre sale apegado a la izquierda de la ventana. le doy al espacio y nada

set /p preg01= Que disco quieres jugar? [1,2]

y por mucho espacio q le meta siempre me sale en el mismo sitio
En Windows 10 actualizado (no se si en Windows anteriores pasa lo mismo), no hay manera de dejar espacios con el comando SET ni aun escribiendo el texto entre comillas

Una solucion chapuza es mostrar el texto con el comando ECHO que si admite espacios y usar el comando SET en la siguiente linea, aunque de este modo el cursor no queda 'esperando' la respuesta tras el texto.

echo ¿ Que disco quieres jugar? [1,2]
set /p preg01=

(deja un espacio tras el signo igual)
okey voy a mirar, gracias!
A mi no me parece tan "chapuza" usar el comando ECHO para hacer la pregunta para luego establecer el valor de la variable preg01. Es una solución desde luego. Batch no es tan adaptable como lo es bash.

No obstante, quizás te interese mirarte el comando CHOICE. Si estás pidiendo al usuario que escoja entre 2 o más opciones determinadas, puedes forzarle a que escoja entre un grupo de ellas predefinidas y no que escriba a su voluntad un valor que luego tengas tú que evaluar. En este caso, podrías hacer algo así como:

CHOICE /C 12 /N /M "¿Qué disco quieres jugar? [1,2]"
IF ERRORLEVEL 2 GOTO DISK2
IF ERRORLEVEL 1 GOTO DISK1


En función de la opción que especifiques a CHOICE, éste devolverá el valor numérico de la opción escogida en la variable ERRORLEVEL (3ª opcion - valor 3, 2ª opcion - valor 2, etc.). Sólo es cuestión de evaluar qué valor de ERRORLEVEL te está devolviendo para que el programa funcione de una manera u otra. Adicionalmente, CHOICE permite introducir una cadena en el mensaje con /M y puedes ocultar las opciones con /N.
3 respuestas