Error con batch

Iniciado por Danydarko, 8 Febrero 2018, 20:25 PM

0 Miembros y 1 Visitante están viendo este tema.

Danydarko

Hola a todos,

He mirado en el foro pero no he encontrado nada que me saque de dudas. Tengo un problema a la hora de hacer un archivo batch, necesito crear un fichero por lotes que 1.- editar: abre el editor de texto (bloc de notas-notepad.exe) 2.- información del sistema: nos da la información del sistema operativo y de la memoria. Así mismo, nos debe avisar en cada caso de la opción que hemos elegido. Seguro que para algunos de vosotros esto es facilísimo, pero yo estoy empezando y me está costando bastante.

He hecho lo siguiente:

@echo off
: menu
echo xxxxxxxxxxxxxxxxxxxxxx
echo selecciona una opcion
echo xxxxxxxxxxxxxxxxxxxxxx
echo 1. Abrir editor de texto
echo 2. Muestra informacion del sistema
set /p ver= Elija una opcion
if %ver%==1 goto et
if %ver&==2 goto is
:et
echo editor de texto
start notepad.exe
goto menu
:is
echo tu sistema operativo y tu memoria es
ver
goto fin
:fin

Pero al seleccionar el 2, me da el siguiente error:

No se esperaba & en este momento.

¿Que puede estar mal? estoy usando Windows 10, por si sirve de ayuda

Gracias!

Eleкtro

#1
Cita de: Danydarko en  8 Febrero 2018, 20:25 PMPero al seleccionar el 2, me da el siguiente error:

No se esperaba & en este momento.

¿Que puede estar mal?

Bueno, el motivo de ese error de sintaxis es obvio:
Citarif %ver&==2 goto is

ahí cometiste un pequeño fallo al escribir el símbolo de la variable.




Por cierto, en esta parte del código:

Citar
Código (dos) [Seleccionar]
set /p ver= Elija una opcion
if %ver%==1 goto et
if %ver&==2 goto is

:et
...

...¿has pensado que ocurriría si el usuario escribe cualquier otra cosa que no sea "1" ni "2"?, tal y como tienes ahora mismo ese código, cualquier texto introducido que no sea "2", practicamente se evaluaría como si el usuario hubiese elegido la opción "1", puesto que la ejecución del código seguiría en la etiqueta :et

En lugar se usar Set /P, deberías usar el comando CHOICE para elaborar ese tipo de selección de opciones de forma estable y sofisticada.

Saludos








Danydarko

Madre mía, gracias Elektro!

Ayer tenía la cabeza ya quemada y mira que revisé las líneas muchas veces.

Voy a ver si aplico lo de choice.

Gracias por el consejo!

Eleкtro

#3
Cita de: Danydarko en  9 Febrero 2018, 09:34 AMVoy a ver si aplico lo de choice.

Por si no lo consigues, aquí te muestro como podría ser la adaptación en tu código:

Código (dos) [Seleccionar]
@Echo OFF & (CHCP 1252)1>NUL

:MENU
CLS
Echo:xXxXxXxXxXxXxXxXxXxXx
Echo:Seleccione una opción
Echo:xXxXxXxXxXxXxXxXxXxXx
Echo+
Echo:[1] Abrir editor de texto
Echo:[2] Mostrar información del sistema
Echo:[3] Salir
Echo+

Choice.exe /C "123" /M "Elija una opción:"
IF %ErrorLevel% EQU 1 (Call :NOTEPAD)
IF %ErrorLevel% EQU 2 (Call :SYSINFO)
IF %ErrorLevel% EQU 3 (Exit /B 0)
Pause
GoTo :MENU

:NOTEPAD
Echo:Iniciando editor de texto...
"notepad.exe"
GoTo :EOF

:SYSINFO
Echo:Obteniendo información del sistema...
REM "ver.exe"
"systeminfo.exe"
GoTo :EOF


saludos