[Batch] Hacerlo mas intuitivo

Iniciado por KZN, 13 Marzo 2014, 11:49 AM

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

KZN

lo que quería es que si le pido un comando de abrir un puerto, mientras hace eso que me salga otra cosa en la cmd, por ejemplo "cargando..." para que no se haga tanto royo

Eleкtro

¿Podrías reformular la duda en un lenguaje que todos podamos entender, y de paso, aportar el código que estás utilizando?.

De todas formas, puedes recurrir al comando Start para instanciar una segunda CMD o ejecutar otro comando de forma asíncrona, eso es lo único que puedes llegar a conseguir en Batch:

Código (DOS) [Seleccionar]
@Echo OFF

Echo Cargando...

REM Lo ejecuto en una nueva instancia de la CMD.
REM Start /MIN "New CMD" "%ComSpec%" /K "Dir /B /S "%HomeDrive%""

REM O lo ejecuto en la misma ventana.
Start /B "Asynchrnous Command" Dir /B /S "%HomeDrive%" 1>NUL 2>&1

Echo Hacer otra cosa mientras tanto...

Pause&Exit


Si quieres hacer algo mejor que eso, entonces debes cambiar a un lenguaje de verdad.

Saludos








KZN

quiero que mientras haga un ejemplo este proceso
@echo off

set name=part*
set name2=rar
ren *.%name%.%name2% AC3.%name%.%name2%


en la consola cmd se vea "cargando..."

PedroDJavier

Este metodo es algo guarro pero funciona muy bien:
Por ejemplo:

@echo off
echo BORRANDO CARPETA "MONO" DE ESCRITORIO...
PING LOCALHOST /n 5 >nul
del %homepath%\desktop\mono
echo TERMINADO !
EXIT


Esto lo que hace es muestra durante 5 segundos el texto "BORRANDO CARPETA MONO DE ESCRITORIO" y cuando pasan esos 5 segundos la borra pero lo que el usuario ve es como si se estuviera borrando durante esos 5 segundos.

Creo que no me he explicado bien pero en realidad es muy muy facil.

Un saludo !

KZN

es justo lo que busco, pero si quiero poner muchas lineas mientras aparece el mensaje, con esas lineas que me das me valdría o tendría que hacerla que repetirla??

PedroDJavier

Cita de: KZN en 13 Marzo 2014, 15:48 PM
es justo lo que busco, pero si quiero poner muchas lineas mientras aparece el mensaje, con esas lineas que me das me valdría o tendría que hacerla que repetirla??

Las lineas de codigo se van a ejecutar muy rapido a no ser que tenga un pc con poco procesador o RAM, el mensaje es solo un efecto grafico de forma que puedes hacer algo asi:

@echo off
echo PROCESANDO...
PING LOCALHOST /n 5 >nul
set sarandonga=ramaldamadingond
set xxxx=yfuisgf
set ufiowehf=uf8ef8ye3w
set fyeufhuief9o=7489164
set hfuehfuie=uy8932yf
del C:\carpeta_inutil
del C:\carpeta_util
echo TERMINADO !
pause
exit


Es decir se mostrara PROCESANDO...  y por 5 segundos aparentemente no se hara nada (es por el >nul) y luego si hay muchas instrucciones pues lo que tarden es decir el mensaje permanece por 5 segundos pero si luego copias un archivo de 1gb alomejor el proceso se alarga 10 segundos mas que es lop que tarda en copiarse el archivo (eso si, recuerda poner >Nul al final para que no se muestre mientras se copia)

Ahora creo que me expllique mejor, Un saludo

PD: Te voy a hacer un programa de prueba ahora para que veas

PedroDJavier

@echo off
echo PULSA CUALQUIER TECLA PARA VER LA DEMO DE ESPERAR UN TIMPO
echo             POR PEDRODJAVIER
pause>nul

::aqui empieza lo bueno xD

cls
echo CARGANDO...
PING LOCALHOST /n 5 >nul
echo.
echo  PARTE 1 COMPLETADA
echo PULSA CUALQUIER TECLA PARA CONTINUAR
pause>nul
echo CARGANDO PARTE 2...
ping LOCALHOST /n 3 >Nul
echo TERMINADO! (DISCO C BORRADO XD)
PING LOCALHOST /n 10 >nul
exit


Compilalo y entenderas mejor como funciona :D

Un saludo !

Eleкtro

Cita de: KZN en 13 Marzo 2014, 15:48 PMes justo lo que busco

¿Estás seguro?, ¿porque hacer esperar al usuario durante "X" segundos cuando la acción puede ser inmediata, y puedes seguir mostrando la misma información usando ecos?.

Saludos








KZN

pero se va mostrar lo que hago o no? porque yo lo que quiero es que por ejemplo "abrir un puerto"

que estea abriendo el puerto pero que al mismo tiempo no este mostrando eso sino que aparezca "Cargando..."

Eleкtro

Citar¿Podrías ... aportar el código que estás utilizando?.

Desconozco que comando estás usando a pesar de habertelo pedido ya, asi que confórmate con esto:


Presudocódigo:
Echo: Mostrar Mensaje informativo
Ejecutar Comando y redirigir la salida a NULL



Código:
@Echo off

Echo: Cargando
Comando 1>NUL 2>&1

Echo: Cargando otra cosa
OtroComando 1>NUL 2>&1


Y lee sobre el redireccionamiento de comandos.

Saludos.