Batch Borrar la pantalla pero no el call

Iniciado por ELVJop, 16 Abril 2012, 19:07 PM

0 Miembros y 3 Visitantes están viendo este tema.

ELVJop

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:

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?
El dia 3 de mayo esta cuenta sera borrada.

Eleкtro

Por dios, 6 postdatas xD

Cita de: ELVJop en 16 Abril 2012, 19:07 PM
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 (dos) [Seleccionar]
@echo off

Set pass=elektro
Reg add "HKCR\Test" /v "login" /d "%pass%" /F >NUL

:Login
cls
Echo Dime el pass...
Set /P compare=^>
Reg query "HKCR\Test" /f "%compare%" /e >NUL
If NOT %Errorlevel%==0 (Echo pass incorrecto) Else (Echo pass correcto!)
pause
Goto :Login





Cita de: ELVJop en 16 Abril 2012, 19:07 PM
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 (dos) [Seleccionar]
Call :borrar_cache

:borrar_cache
Del /Q /F archivo 2>NUL
Goto :EOF





Cita de: ELVJop en 16 Abril 2012, 19:07 PM
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 (vb) [Seleccionar]
MsgBox "bla bla bla" & chr(13) & "zzZzzZz...",0,"AVISO"




Cita de: ELVJop en 16 Abril 2012, 19:07 PM
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




Cita de: ELVJop en 16 Abril 2012, 19:07 PM
Que es echo+???
Lee un tutorial básico de Batch y lo entenderás  :P

Salu2








ELVJop

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.
El dia 3 de mayo esta cuenta sera borrada.

Eleкtro

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 (dos) [Seleccionar]
@Echo off
echo MsgBox "bla bla bla" ^& chr(13) ^& "zzZzzZz...",0,"AVISO" > script.vbs
start /B wscript.exe  script.vbs
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 (dos) [Seleccionar]
Echo+
Sirve para insertar una línea en blanco.

Saludosss








ELVJop

#4
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
¿?
El dia 3 de mayo esta cuenta sera borrada.

Eleкtro

Cita de: ELVJopEl 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@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: ELVJop4- ¿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 (dos) [Seleccionar]

REM Para WinRAR
Set "ARCHIVO=c:\test.jpg"
Rar.exe a Test.zip "%ARCHIVO%"


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




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

Puedes usar:
echo+ hola
echo: hola
echo. hola
echo hola








ELVJop

#6
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 (dos) [Seleccionar]
if exist HCKU\XXXXX goto :yaregistrado else goto :registro

:registro
echo Digame una pass
set /p XXX=
cls
echo Repita la pass
set /p XXXX=
if %XXX%==%XXXX% goto :bien else goto registro

:bien
reg add %XXX% HCKU\XXXXX
goto :programa

:registrado
cls
echo Digame la pass
set /p XXXP=
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
El dia 3 de mayo esta cuenta sera borrada.

Eleкtro

#7
Cita de: ELVJop en 16 Abril 2012, 22:39 PMA 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).

Cita de: ELVJop en 16 Abril 2012, 22:39 PM
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 (dos) [Seleccionar]
@echo off
Reg query "HKCU\Test1" >nul 2>&1
If %Errorlevel% equ 0 (goto :registrado) Else (goto :registro)

:registro
echo Usuario no registrado, Digame una pass
set /p XXX=
cls
echo Repita la pass
set /p XXXX=
if "%XXX%"=="%XXXX%" (goto :bien) else (goto :registro)

:bien
Reg add "HKCU\Test1" /v "login" /d "%XXX%" /F >NUL
goto :programa

:registrado
cls
echo Usuario registrado, Digame la pass
set /p XXXP=
Reg query "HKCU\Test1" /f "%XXXP%" /e >NUL
If NOT %Errorlevel% equ 0 (Echo pass incorrecto & goto :registrado) Else (Echo pass correcto!)
pause

:programa
echo bienvenido
pause
exit








ELVJop

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 :

Reg query "HKCU\Test1" >nul 2>&1

AL final y al cabo reg query es para comparar.
El dia 3 de mayo esta cuenta sera borrada.

Eleкtro

Cita de: ELVJop en 17 Abril 2012, 19:03 PM
lo unico que no entiendo de todo el code es esto :

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.