Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Danydarko en 8 Febrero 2018, 20:25 pm



Título: Error con batch
Publicado por: Danydarko en 8 Febrero 2018, 20:25 pm
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!


Título: Re: Error con batch
Publicado por: Eleкtro en 8 Febrero 2018, 21:41 pm
Pero 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:
Citar
if %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
  1. set /p ver= Elija una opcion
  2. if %ver%==1 goto et
  3. if %ver&==2 goto is
  4.  
  5. :et
  6. ...

...¿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


Título: Re: Error con batch
Publicado por: Danydarko en 9 Febrero 2018, 09:34 am
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!


Título: Re: Error con batch
Publicado por: Eleкtro en 9 Febrero 2018, 16:08 pm
Voy 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
  1. @Echo OFF & (CHCP 1252)1>NUL
  2.  
  3. :MENU
  4. CLS
  5. Echo:xXxXxXxXxXxXxXxXxXxXx
  6. Echo:Seleccione una opción
  7. Echo:xXxXxXxXxXxXxXxXxXxXx
  8. Echo:[1] Abrir editor de texto
  9. Echo:[2] Mostrar información del sistema
  10. Echo:[3] Salir
  11.  
  12. Choice.exe /C "123" /M "Elija una opción:"
  13. IF %ErrorLevel% EQU 1 (Call :NOTEPAD)
  14. IF %ErrorLevel% EQU 2 (Call :SYSINFO)
  15. IF %ErrorLevel% EQU 3 (Exit /B 0)
  16. GoTo :MENU
  17.  
  18. :NOTEPAD
  19. Echo:Iniciando editor de texto...
  20. "notepad.exe"
  21. GoTo :EOF
  22.  
  23. :SYSINFO
  24. Echo:Obteniendo información del sistema...
  25. REM "ver.exe"
  26. "systeminfo.exe"
  27. GoTo :EOF

saludos