Menú avanzado en Batch

Iniciado por RTN-House, 27 Diciembre 2014, 21:05 PM

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

RTN-House

Hola amigos,
hace tiempo vengo creando en mi oficina un menú avanzado en batch (como se describe en el título)
Ahora pues, necesito vuestras aportaciones y respuestas para poder reparar fallos, o simplemente aportar nuevas ideas.
Programa:
Código (dos) [Seleccionar]
@echo off
color 1A
Title  Le saluda RTN-House
set/p nombre=Escribe tu nombre y oprime Enter.
set/p apellido=Escribe tu primer apellido:
set/p apellido2=Escribe tu segundo apellido:
cls
ECHO.
ECHO.
@ECHO off
ECHO.
ECHO  CARGANDO: ÛÛ
Ping localhost -n 2 >nul
cls
@Echo off
ECHO.
ECHO  CARGANDO: ÛÛÛÛÛÛÛÛ    
Ping localhost -n 2 >nul
cls
color a
ECHO Introduce la contraseña:
set /P Password=
if %password%==[b]neilblack[/b] goto OK
:NO_OK
ECHO.
ECHO Password incorrecta...
ECHO.
ECHO Pulsa una tecla para volver a intentarlo...
PAUSE >NUL
GOTO INICIO
:OK
ECHO.
ECHO.
ECHO ¡¡Contraseña correcta!!
ECHO Sigue...
ECHO.
@ECHO off
ECHO.
ECHO  CARGANDO: ÛÛ
Ping localhost -n 2 >nul
cls

@Echo off
ECHO.
ECHO  CARGANDO: ÛÛÛÛÛ    
Ping localhost -n 2 >nul
cls

@ECHO off
ECHO.
ECHO  CARGANDO: ÛÛÛÛÛÛÛÛÛÛ
Ping localhost -n 2 >nul
cls

:Start
Title Menu RTN-House   \,,/(-.-)\,,/
cls
echo                                   %TIME%
ECHO                 ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
ECHO                    ///..==[Bienvenido %nombre% %apellido% %apellido2%]==..///    
ECHO                 ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
ECHO.
echo.
echo                         1 - Instant Shutdown
echo                         2 - 5 Minute Count Shutdown
echo                         3 - Logoff
echo                         4 - Shutdown Abort
echo                         5 - 5 Minute Count Restart
echo                         6 - Instant Restart
echo                         7 - Exit (X)
echo                         8 - Refresh
echo                         9 - What's the Time, Exactly?
echo                        10 - Goto Facebook (When Online)
echo                        11 - File Tree
echo                        12 - Goto Facebook, if Blocked (When Online)
echo                        13 - Normal Command Prompt Window
echo                        14 - Remote -S -L -R Menu
echo                        15 - Goto Playlist.com (When Online)
echo                        16 - List of Blocked Websites
echo                        17 - Task Manager
echo                        18 - Matrix
echo                        19 - Open System 32
echo                        20 - Calculator
echo                        21 - Paint
echo                        22 - Chat With Other (Same Networked) Computers
echo                        23 - DIRectory
echo                        24 - ECHO ON
echo                        25 - Character Map
echo                        26 - Antivirus
echo                        27 - RTN
echo                        28 - Batch Calculator

set Choice=
set /p Choice=""

if '%Choice%'=='1' goto insta
if '%Choice%'=='2' goto fivemin
if '%Choice%'=='3' goto log
if '%Choice%'=='6' goto inre
if '%Choice%'=='4' goto abort
if '%Choice%'=='TEO' goto teo
if '%Choice%'=='5' goto restart
if '%Choice%'=='7' goto exit
if '%Choice%'=='8' goto refresh
if '%Choice%'=='9' goto time
if '%Choice%'=='10' goto face
if '%Choice%'=='11' goto tree
if '%Choice%'=='12' goto face2
if '%Choice%'=='13' goto cmd
if '%Choice%'=='14' goto remote
if '%Choice%'=='15' goto play
if '%Choice%'=='16' goto blocked
if '%Choice%'=='17' goto taskmgr
if '%Choice%'=='18' goto matrix
if '%Choice%'=='19' goto 32
if '%Choice%'=='20' goto calc
if '%Choice%'=='21' goto paint
if '%Choice%'=='22' goto chat
if '%Choice%'=='23' goto dir
if '%Choice%'=='24' goto echoon
if '%Choice%'=='25' goto chara
if '%Choice%'=='26' goto antivirus
if '%Choice%'=='27' goto rtn
if '%Choice%'=='28' goto batcalc

cls
echo '%Choice%' is not valid
ping localhost -n 5 >Nul
echo Try again
ping localhost -n 5 >nul
cls
goto Start

:insta
cls
echo Do You Really Want to do This?
pause
shutdown -s -t 0
goto exit

:fivemin
shutdown -s -f -t 300 -c "You have 5 minutes to finish up"
goto anything?

:log
shutdown -f
goto exit

:exit
msg * See You Soon!
exit

:abort
shutdown -a
goto anything?

:teo
msg * ooo! hidden option! hahaha!
ping localhost -n 5 >nul
goto 1bla

:1bla
echo T 3 E O  T 3 E O  T 3 E O  T 3 E O  T 3 E O  T 3 E O  T 3 E O  T 3 E O  T 3 E O
goto 1bla

:restart
shutdown -r -t 300 -c "5 minutes left"
goto exit2

:inre
shutdown -r -t 0
goto exit

:exit2
exit

:refresh
Title ...Please Wait...
cls
echo ...please wait...
ping localhost -n 3 >nul
goto Start

:time
Title Menu's Exact Military Time
cls
echo             [ALT] + [ENTER] Activates/Deactivates Full Screen Mode
echo.
echo                                ~ %TIME% ~
echo.
echo                              Exact Military Time
ping localhost -n .000000000000000000000001 >nul
goto time
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:anything?2
msg * Scroll Up if You Don't See Anything.
msg * Anything Else?
goto Start
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:face
start www.facebook.com
goto exit
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:tree
tree C:/
ping localhost -n 5 >nul
goto anything?2
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:anything?
msg * Anything Else?
goto :Start
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:face2
start http://69.63.181.16/
goto exit
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:cmd
start
goto exit
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:remote
shutdown -i
goto anything?
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:play
start www.playlist.com
goto exit2
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:blocked
notepad c:\WINDOWS\system32\drivers\etc\hosts
goto exit2
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:taskmgr
taskmgr.exe
goto anything?
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:matrix
color 2
echo %random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%%random%
goto matrix
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:32
START C:/WINDOWS/System32
goto anything?
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:calc
C:/windows\system32\calc.exe
goto anything?
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:paint
C:\WINDOWS\SYSTEM32\mspaint.exe
goto anything?
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:chat
C:\WINDOWS\SYSTEM32\winchat.exe
goto anything?
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:correct
cls
echo                                        Welcome RTN.
ping localhost -n 3 >nul
goto Start
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:hinthelp
cls
echo It's My PSP's Password
ping localhost -n 5 >nul
cls
goto question
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:stupid
cls
msg * do you think i'm that stupid?!
msg * I'm Insulted!
exit
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:dir
cls
dir
ping localhost -n 10 >nul
goto anything?
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:echoon
@echo on
goto Start
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:chara
C:\WINDOWS\SYSTEM32\CHARMAP.exe
goto anything?
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:anivirus
start "C:\Users\Xavi_2\Desktop\Programa XAVI\Complementos\PAR1Antivirus.bat"
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu
:PIKA
color 0c
CLS
echo                                                                                                                                            
echo    `/ooooooooooooo+/-`  `oooooooooooooooooooo+ `/sso-          `ooooo.    
echo    /yyyyyyyyyyyyyyyyyy+``yyyyyyyyyyyyyyyyyyyys :yyyyyo.        `yyyyy-    
echo    /yyyys::::::::+syyyys.///////+yyyyy+/////// /yyyyyyy/`      `yyyyy-    
echo    /yyyys         .yyyyy/       -yyyyy`        /yyyyyyyys:     `yyyyy-    
echo    /yyyys         .syyyy/       -yyyyy`        :yyyyyyyyyyo-   `yyyyy-    
echo    /yyyys--------/syyyys`       -yyyyy`        :yyyys-oyyyyy+` `yyyyy-    
echo    /yyyyyyyyyyyyyyyyyy+`        -yyyyy`        :yyyys` :syyyyy/.yyyyy-    
echo    /yyyyyooooosyyyyy+`          -yyyyy`        :yyyys   `/yyyyysyyyyy-    
echo    /yyyys      /yyyyy/          -yyyyy`        :yyyys`    .oyyyyyyyyy-    
echo    /yyyys       :yyyyy+`        -yyyyy`        :yyyys       -syyyyyyy-    
echo    /yyyys        -yyyyyo`       -yyyyy`        :yyyys        `/syyyyy-    
echo    /yyyyo         .syyyys.      -yyyyy`        :yyyys`         `+yyyo`    
echo     ````            `````        `````          ````             ```                                                                                
                                                                         

pause
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu

:batcalc
cls
:begin
echo --------------------------------------------------------------
echo Welcome to Batch Calculator
echo --------------------------------------------------------------
echo.
set /p sum=
set /a ans=%sum%
echo.
echo = %ans%
echo --------------------------------------------------------------
pause
cls
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu[/quote]
Podemos implantar un sistema de protección de contraseñas muy efectivo (para principiantes), el sistema de shutdown:
[quote]@echo off
color a
Title Password Page
:question
set /a tries=2
:top
echo Teo's Folder
echo.
echo Please Enter Password
echo.
echo ----------------------------------------------
echo %tries% attempt(s) left.
echo ----------------------------------------------

set /p pass=
if %pass%==systemxavi goto correct
rem            !!!!!!!!!!!!!!!!!!!!4123 can be substituted with anything, cause it's your password!!!!!!!!!!!!!!!!!
set /a tries=%tries -1
if %tries%==0 goto penalty

cls
goto top

:penalty
echo Sorry, too many incorrect passwords, initiating shutdown.
start shutdown -s -f -t 300 -c "Should have asked for permission...SHUTDOWN INITIATED"
pause
exit[/quote]

Acoplar un menú un poco más "fantasioso":
[quote]@echo off
title  .:Bother v0.1:.
echo.
echo.
MODE CON: COLS=89 LINES=35




color a
echo                                            ³
echo   MOMENTO DE EJECUCION:                    ³
echo     FECHA - %DATE%.                    ³                    creado por RTN-House
echo     HORA  - %TIME%.                   ³                                        
echo                              ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo                              ³                           ³
echo                              ³    ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»   ³
echo ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄij    º    RTN v0.2.7   º   ³ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
echo                              ³    ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ   ³
echo                              ³                           ³
echo                              ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo                                            ³
echo                                            ³
echo                              Ú-------------Á--------------¿
echo                              Ý  ELIMINA EL VIRUS OCULTA   Ý
echo                              Ý CARPETAS, ACCESOS DIRECTOS Ý
echo                              Ý  Y EJECUTABLES INFECTADOS  Ý
echo                              À---------------------------Ù  
echo                                            ³
echo                             ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
echo                             ³  1.- ELIMINAR VIRUS DE USB   ³
echo                             ³  2.- INFOMACION DEL PROGRAMA ³
echo                             ³  3.- SALIR (CTRL+C)          ³            
echo                             ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
echo                                            ³
echo                                            ³                                        
echo                                            ³                                          
echo                                            ³
echo ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ



pause[/quote]

O por otra parte darle un diseño con cuadrados, tal que así:
[quote]@echo off
title Menu Diseño
echo Menu
ECHO.
ECHO. ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ECHO. ³1³ ³ AGREGAR ATENCION ³
ECHO. ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ECHO. ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ECHO. ³2³ ³ ELIMINAR ATENCION ³
ECHO. ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ECHO. ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ECHO. ³3³ ³ VISUALISAR ATENCIONES ³
ECHO. ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ECHO. ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ECHO. ³4³ ³ ATENCIONES ELIMINADAS ³
ECHO. ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ECHO. ÚÄ¿ ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ECHO. ³5³ ³ SALIR ³
ECHO. ÀÄÙ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ

ECHO.&ECHO.&ECHO.&ECHO.&ECHO.&ECHO.
ECHO SU OPCION:
ECHO.
SET /P opc=----
if %opc%==1 goto *
if %opc%==2 goto *
if %opc%==3 goto *
if %opc%==4 goto *
if %opc%==5 goto Salir


PD: la contraseña del programa es neilblack

Saludos y aporten ideas.
Desde el PC, RTN'House

Eleкtro

#1
Buenas!

1) Debes utilizar las etiquetas para insertar código.

2) ¿Por qué motivo posteas un Batch-Script en el subforo de C++?, sabes perfectamente que este no es el lugar permitido, ya que te has paseado por la sección de Scripting.

Lee las normas del foro...

Saludos!




EDITO:

No he examinado a fondo el código, ya que con la cita y sin etiquetas geshi... dificulta la lectura.

1) Haces demasiada repetición de código, los strings que repites deberías almacenarlos en una variable, y utilizarla.

2) De hecho, las 20 o 30 repeticiones que haces de estas instrucciones:
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto :menu

Las puedes simplificar poniéndolas en un único método, y llamarlo en una sola instrucción.

2) El backslash en Windows se escribe "\", no "/", está considerado una mala práctica de programación.

3) Las condicionales de "If %choice%==" puedes simplificarlo en una sola instrucción dinámica, utilizando el comando CHOICE.exe (Goto :%ErrorLevel%), aunque para ello primero deberás modificar el nombre de las etiquetas de los métodos, por índices númericos (:1, :2, etc...).

4) En lugar de escribir rutas absolutas que apunten hacia archivos del sistema, lo correcto es utilizar las variables de entorno (%SystemRoot%\System32\...)

EDITO:

5) La instrucción que usas para simular el efecto Matrix, usando una linea de miles de caracteres, es simplemente lo más horrible que he visto, pero no por la técnica en sí, sino por que dificulta la lectura del código tener que desplazarse horizontalmente para leer la linea... no es nada productivo, horrible.
Al menos podrias haber hecho una especie de indentación utilizando varias repeticiones del comando Echo, te sugiero que edites el código que has posteado arriba para mejorar ese detalle por que de verdad es muy agobiante ver instrucciones tan largas en un código...

Busca el modo de reemplazar esa instrucción apra hacer lo mismo en menos lineas, como por ejemplo así:

Código (dos) [Seleccionar]
@Echo OFF & SetLocal EnableDelayedExpansion

:matrix
color 2
For /L %%# in (0, 1, %Random:~0,2%) Do (<Nul Set /P="!random!")
goto matrix
ECHO PRESIONE ENTER PARA REGRESAR AL MENU
pause >nul
goto menu