Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: ELVJop en 16 Abril 2012, 19:07 pm



Título: Batch Borrar la pantalla pero no el call
Publicado por: ELVJop en 16 Abril 2012, 19:07 pm
Hola amigos una vez mas traigo un reto muy complicado. Resulta que viendo una imagen vi como una barra de progreso hiba avanzando. Esa idea me encanto asi que me puse a revisar su script. Lo que paso fue que utilizaba el call cosa que me soluciono otra duda que no viene al caso. La question es que mi programa borra archivos (de cache ect) la question es que si pongo el call me sale: No se ha encontrado X archivo. Y claro queda fatal. Despues se me ocurrio limpiando la pantalla pero claro tambien limpia el call. Tengo una solucion que seria:
Código:
if exist XXXX.XX goto :seguir1
del /F /Q XXXXXX.XX
:seguir1
Pero es super aburrido tenr que poner eso en todo el code. Existe alguna manera de reparar mi problema?

PD: Duda extra haber quien la sabe: Que es echo+???

PD2:Edito para degar la duda mas clara que uso call como etiqueta no como comando. (Urge un poquito gracias)

PD3: trible duda: Sabe alguien el comando para que salte una ventana de aviso? El amo Google me dice que es msg pero no.

PD4: Otra duda mas!!! Tengo otra duda que la busco en google si no modifico el post

PD5: Esta no es la duda de antes pero: Existe alguna manera de mandar a windows que comprima un archivo a Zip? Gracias

PD6: Esta si es la duda del PD4: Estoy intentando hacer un registro que pongas una pass y te diga Version registrada o no registrada (De aqui el PD3) La question es que si lo hago en archivo es muy facil de jaquear. Si lo meto en el registro es mas dificil. Por eso usario Reg add. Pero claro para comparar necesito reg compare y no entiendo su sintaxis. Alguien me ayuda?


Título: Re: Batch Borrar la pantalla pero no el call
Publicado por: Eleкtro en 16 Abril 2012, 20:30 pm
Por dios, 6 postdatas xD

Pero claro para comparar necesito reg compare y no entiendo su sintaxis. Alguien me ayuda?

Para verificar el valor de una clave, Usa reg query.

Código
  1. @echo off
  2.  
  3. Set pass=elektro
  4. Reg add "HKCR\Test" /v "login" /d "%pass%" /F >NUL
  5.  
  6. :Login
  7. cls
  8. Echo Dime el pass...
  9. Set /P compare=^>
  10. Reg query "HKCR\Test" /f "%compare%" /e >NUL
  11. If NOT %Errorlevel%==0 (Echo pass incorrecto) Else (Echo pass correcto!)
  12. Goto :Login



si pongo el call me sale: No se ha encontrado X archivo

Redirecciona la salida del comando DEL para ocultar el mensaje de "no se encuentra el archivo"...

Código
  1. Call :borrar_cache
  2.  
  3. :borrar_cache
  4. Del /Q /F archivo 2>NUL
  5. Goto :EOF



PD3: trible duda: Sabe alguien el comando para que salte una ventana de aviso? El amo Google me dice que es msg pero no.

En windows XP puedes usar el comando "MSG"
En otros windows NO. Puedes usar las aplicaciones de terceros: NirCMD, Messagebox, y alguna más q no recuerdo...
También puedes hacerlo con una simple línea de vbscript:

Código
  1. MsgBox "bla bla bla" & chr(13) & "zzZzzZz...",0,"AVISO"



PD5: Esta no es la duda de antes pero: Existe alguna manera de mandar a windows que comprima un archivo a Zip? Gracias
7zip, gzip, winzip o WinRAR por linea de comandos



Que es echo+???
Lee un tutorial básico de Batch y lo entenderás  :P

Salu2


Título: Re: Batch Borrar la pantalla pero no el call
Publicado por: ELVJop en 16 Abril 2012, 20:58 pm
Rengo que ir por puntos que si no no me aclaro:

1-Exacto!!! Pero existe alguna forma de hacer: If exist Y una entra da de registro?

2-Ahora lo pruebo pero hace pinta  de ser exactamente lo que busco.

3- ¿? (Que conste que tengo que irme por eso no pruebo todavía los codes) No entiedo. Osea ese codigo que tu me has dado es valido o no?

4-Si pero en Windows 7 (No se si en Vista o XP) Existe la posibilidad de comprimirlo en zip sin un compresor (Enviar a > Archivo comprimido zip

5- Haro lo busco pero en google todo el rato me estan apareciendo tutoriales de echo y echo.


Título: Re: Batch Borrar la pantalla pero no el call
Publicado por: Eleкtro en 16 Abril 2012, 21:18 pm
Cita de: ELVJop
1-If exist Y una entra da de registro?
No, "If exist" es una comprobación para archivos. Tienes que usar reg query.

Cita de: ELVJop
3- ese codigo que tu me has dado es valido o no?
Si, Como ya dije es un simple vbs.
http://msdn.microsoft.com/en-us/library/sfw6660x%28v=vs.85%29.aspx

Código
  1. @Echo off
  2. echo MsgBox "bla bla bla" ^& chr(13) ^& "zzZzzZz...",0,"AVISO" > script.vbs
  3. start /B wscript.exe  script.vbs
  4. Del /Q script.vbs

Cita de: ELVJop
4-en Windows 7 Existe la posibilidad de comprimirlo en zip sin un compresor (Enviar a > Archivo comprimido zip
Pero no es un comando.

Cita de: ELVJop
5-  lo busco me estan apareciendo tutoriales de echo y echo.

Código
Sirve para insertar una línea en blanco.

Saludosss


Título: Re: Batch Borrar la pantalla pero no el call
Publicado por: ELVJop en 16 Abril 2012, 21:36 pm
vamos reduciendo!!!! Edit: No terminamos de reducir

1- Si pero si es el usuario el que pone la contraseña como lo hago? En archivos es if exist xxxx.xx goto :yaregistrado else goto :sinregistrar. El query esta bien pero y si no existe la entrada? Tendra que ser creada no?

4- ¿Pero existe alguan forma de coger la ruta o algo y pasarlo tipo start XXX.exe /C:\Misarchivos\comprimirestacarpeta
¿?


Título: Re: Batch Borrar la pantalla pero no el call
Publicado por: Eleкtro en 16 Abril 2012, 22:36 pm
Cita de: ELVJop
El query esta bien pero y si no existe la entrada? Tendra que ser creada no?
El ejemplo que te dí crea primero la entrada con el pass ya predefinido para probar el code... luego el usuario tiene que typear la contraseña, y si no es correcta O SI NO EXISTIERA LA ENTRADA manda un código de error "1", El cual te sirve para lo que intentas.

Si por otro lado tienes dificultades para hacer un menú de login, busca en los primeros temas (sobre batch) de este subforo encontrarás ejemplos recientes ya hechos, y en el buscador encontrarás muchos más.



Cita de: ELVJop
Código:
@echo off
MsgBox "bla bla bla" & chr(13) & "zzZzzZz...",0,"AVISO"
pause
exit

ELVJop, Te estoy haciendo comprender que esa línea es vbs (VisualBasicScript), Es otro lenguaje de scripting.
msgbox es una función de VBS, si quieres usarlo en un bat, usa el ejemplo tal cual lo puse en el comentario de arriba.



Cita de: ELVJop
4- ¿Pero existe alguan forma de coger la ruta o algo y pasarlo tipo start XXX.exe /C:\Misarchivos\comprimirestacarpeta

A cualquier programa por línea de comandos le puedes pasar un argumento.
Código
  1. REM Para WinRAR
  2. Set "ARCHIVO=c:\test.jpg"
  3. Rar.exe a Test.zip "%ARCHIVO%"

PD: Mírate la ayuda de los programas: XXX.exe /?



Cita de: ELVJop
5-que diferiencia hay entonces entre echo+ y echo.?
Exactamente ninguna.

Puedes usar:
Código:
echo+ hola
echo: hola
echo. hola
echo hola


Título: Re: Batch Borrar la pantalla pero no el call
Publicado por: ELVJop en 16 Abril 2012, 22:39 pm
Te adelantaste a mi ultimo edit. A vale ya te entiendo lo que quieres es que ponga set /p y que el diga la contraseña. Muy ingenioso gracias. No espera me estoy liando. Un segundo que me organize porque no lo entiendo. PErdon estoy echo un lio. Ya aclare mis ideas Lo que tu dices que si no existe (Errolevel) ME da 1 si pero lo malo es que entonces ya habras tipeado una contraseña. Pero lo tuyo no me sirve. Porque si yo quiero hacer algo tipo esto:
Código
  1. if exist HCKU\XXXXX goto :yaregistrado else goto :registro
  2.  
  3. :registro
  4. echo Digame una pass
  5. set /p XXX=
  6. cls
  7. echo Repita la pass
  8. set /p XXXX=
  9. if %XXX%==%XXXX% goto :bien else goto registro
  10.  
  11. :bien
  12. reg add %XXX% HCKU\XXXXX
  13. goto :programa
  14.  
  15. :registrado
  16. cls
  17. echo Digame la pass
  18. set /p XXXP=
  19. Reg query "HKCR\XXXXX" /f "%XXXP%" /e >NUL

No se si me explico

El problema esta en que IF exist como tu dices es para archivos. No para entradas en el registro.
Lo que se me acaba de ocurrir es crear 2 entradas. 1 de ellas seria por ejemplo 1234
Despues un REg query para comparar esa entrada que es 1234 entonces lo comparo por errorlevel si me dice error es que nunca se ha registrado si no si se ha registrado



Elektro H@cker: Usa las etiquetas para los códigos


Título: Re: Batch Borrar la pantalla pero no el call
Publicado por: Eleкtro en 16 Abril 2012, 23:08 pm
A vale ya te entiendo lo que quieres es que ponga set /p y que el diga la contraseña.
Muy ingenioso gracias.

La verdad es que... No es ingenio, Es la única manera aquí y en China para interactuar con el usuario xD.

Repito, Si leyeras (más) un tutorial básico o ejemplos, Conocerías los comandos de Batch y las posibilidades que te permiten hacer cada uno de ellos (al menos los comandos básicos como SET).

if exist HCKU\XXXXX goto :yaregistrado else goto :registro
PD: Borra eso de tu mente ya xD  :P

Si que te sirve. Otro ejemplo:
Código
  1. @echo off
  2. Reg query "HKCU\Test1" >nul 2>&1
  3. If %Errorlevel% equ 0 (goto :registrado) Else (goto :registro)
  4.  
  5. :registro
  6. echo Usuario no registrado, Digame una pass
  7. set /p XXX=
  8. cls
  9. echo Repita la pass
  10. set /p XXXX=
  11. if "%XXX%"=="%XXXX%" (goto :bien) else (goto :registro)
  12.  
  13. :bien
  14. Reg add "HKCU\Test1" /v "login" /d "%XXX%" /F >NUL
  15. goto :programa
  16.  
  17. :registrado
  18. cls
  19. echo Usuario registrado, Digame la pass
  20. set /p XXXP=
  21. Reg query "HKCU\Test1" /f "%XXXP%" /e >NUL
  22. If NOT %Errorlevel% equ 0 (Echo pass incorrecto & goto :registrado) Else (Echo pass correcto!)
  23.  
  24. :programa
  25. echo bienvenido


Título: Re: Batch Borrar la pantalla pero no el call
Publicado por: ELVJop en 17 Abril 2012, 19:03 pm
Conseguido!!! He conseguido hacer mi programa. Ahora el problema esta en que quiero entendero.  :¬¬ lo unico que no entiendo de todo el code es esto :
Código:
Reg query "HKCU\Test1" >nul 2>&1
AL final y al cabo reg query es para comparar.


Título: Re: Batch Borrar la pantalla pero no el call
Publicado por: Eleкtro en 17 Abril 2012, 19:19 pm
lo unico que no entiendo de todo el code es esto :
Código:
Reg query "HKCU\Test1" >nul 2>&1
AL final y al cabo reg query es para comparar.

Query es para buscar coincidencias, Tú haces la comparación basándote en la búsqueda (Lo que encuentra).

El comando de arriba busca la clave "HKCU\Test1", Redireccionando las dos salidas para no mostrar nada en pantalla.


Título: Re: Batch Borrar la pantalla pero no el call
Publicado por: ELVJop en 17 Abril 2012, 19:30 pm
A osea lo que hace es buscarte esa linea y buscar coincidencias es Opcional por eso ponel errorlevel porque si da error es que no existe y si no existe es la primera vez que entra... Muchas gracias. PD: si lees esto. Existe alguna forma nativa en batch de hacer por ejemplo:
Lo que se be:
Tu contraseña ···

Lo que es:
Tu contraseña 123

Y si fuera 1234 que fuera 4 puntos ¿Se puede hacer de forma NATIVA?


Título: Re: Batch Borrar la pantalla pero no el call
Publicado por: Eleкtro en 17 Abril 2012, 20:51 pm
Existe alguna forma nativa en batch de hacer por ejemplo:
Lo que se be:
Tu contraseña ···
Y si fuera 1234 que fuera 4 puntos ¿Se puede hacer de forma NATIVA?

No, No puedes enmascarar caracteres en asteriscos. Lo más parecido es "set /p", Es lo único en Batch.

Podrías usar la función ScriptPW de VisualBasicScript en un bat, pero solo está en WindowsXP.

Saludos