26 dic 2013

Abrir cuadro de dialogo SI/NO con batch

Esto me lo pidio ChUcKyZ0R en yahoo respuesta
pese a las limitaciones de batch se puede hacer cosas muy interesantes fusionandolo con Visual Baisc Script

aqui os dejo un codigo en el que se abre un cuadro de dialogo y le hace una pregunta al usuario y dependiendo en que boton clique hace una cosa u otra

@echo off
set mensaje=Te Parece interesante
::crea un archivo ejecutable vbs
echo wscript.echo msgbox(WScript.Arguments(0),4,WScript.Arguments(1)) >"%windir%\pcpi.dantas.vbs"
::Ejecuta el archivo.vbs y devuelve el resultado en la variable %%D
for /f "tokens=* delims=" %%D in ('cscript //nologo "%windir%\pcpi.dantas.vbs" "%mensaje%" "Tutoriales PC PI"') do (
::El VBS devuelve 6 si se ha clicado en SI y 7 si se ha clicado en NO
if "%%D"=="6" goto si else goto no
)
:no
echo yo creo que si
pause

exit
:si
echo Gracias no ovides comentar y agradecer
pause

24 dic 2013

pequeño login en batch

es un pequeño ejemplo de lo que hacer con batch pese a sus limitacion, tengan en cuenta que eso no ofrece mucha seguridad ya que cualquiera con un poco conocimiento sobre batch podria abrir y ver el usuario y contraseña asi que usadlo con moderacion.

@echo off
::esto es un comentario
::usuarios y contraseñas separados por punto y coma
::a junior le corresponde 01234 a pcpi 5678...
set usuarios=junior;pcpi;dantas;tutoriales
set passwords=01234;5678;901234;omega

:usuarios
cls
echo Inserte el nombre de usuario
::el modificador /P en set es para que escriba el usuario
set /p usuario=--^>

::defino un contador para listar los usuarios
set id=1
:U
::lista la variable %usuarios% separandola por ;
for /f "delims=; tokens=%id%" %%U in ("%usuarios%") do (
:: si existe el usuario verificar contraseña
if "%%U"=="%usuario%" goto password
:: el modficador /a en set sirve para hacer operaciones matematicas ejem: 1 + 1
:: asi que le sumo 1 al contador para comparar el siguiente usuario con él el que inserto el usuario
set /a id=%id% + 1 && goto U
)
cls
:: si el usuario introducido no esta en la lista mostrar eso
echo No existe el usuario pruebe con otro
pause>nul
goto usuarios

:: si el usuario existe comprovar contraseña
:password
:: defino el contador de contraseña erroneas
set pcont=1
:contador
cls
echo Inserte el password para %usuario%:
set /p pass=--^>
:: obtener la contraseña corrspondiente al usuario %id%
for /f "delims=; tokens=%id%" %%P in ("%passwords%") do (
:: si es correcta ir a OK
if "%%P"=="%pass%" goto OK
if "%pcont%" GEQ "3" goto Error
:: sino sumar el error e ir a contador para repetir la pregunta
set /a pcont=%pcont% + 1 && goto contador
)
:Error
echo No te reconosco
pause>nul
exit

:OK
echo ha iniciado sesion con exito
::aqui pones tu codigo
pause

Pasar el resultado de un comando a una variable

@echo off
::esto es un comentario y bat no tomara en cuenta
::comando ping que quiero pasar a una variable el resultado
ping -n 1 192.168.1.1>archivo.txt

::leer el archivo linea por linea
for /F "tokens=*" %%X in (archivo.txt) do call :variables "%%X"
goto fin

:variables
set /a contador=contador + 1
::definir que linea pasar a que varible puede añadir cuantos if como variables se necesite
if "%contador%"=="2" set lineaDOS=%~1
if "%contador%"=="4" set lineaCUATRO=%~1
goto:eof

:fin
del /f /q archivo.txt

echo %lineaDOS%
echo %lineaCUATRO%
pause
Creado por Dantas.es