[ BATCH ] Efecto visual de escribir lento?

Iniciado por Eleкtro, 19 Noviembre 2011, 00:41 AM

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

Eleкtro

Hola, me gustaría crear en batch una "función" para "typear" lento en la CMD... Pudiendola llamar facilmente desde un call, por ejemplo así "CALL :SLOW leeeeeeeento" y que escribiera letra por letra el argumento, con un "ping" entre cada letra para darle ese efecto de teclear typear...

No se si existe alguien que ya lo haya echo... A mi me está costando mucho hacerme una idea de como podría hacerse :/, No se de que forma puedo utilizar un FOR para hacer esta tarea.. que por cierto me parece divertida xD.

Código (dos) [Seleccionar]
@echo off

Call :SLOW abcdefghijklmnopqrstuvwxyz

:SLOW

For /F "Tokens=1-3" %%a in ('echo %1') do (

echo %%a
ping -n 1 localhost >nul & ping -n 1 localhost >nul
echo %%b
ping -n 1 localhost >nul & ping -n 1 localhost >nul
echo %%c
ping -n 1 localhost >nul & ping -n 1 localhost >nul
pause
)


No se como seguir el script, es solo un ejemplo...









$Edu$

Yo tenia uno guardado que no se de quien era, pero funciona de la forma que lo haces si o algo asi, porq eso q tienes no pone hacia abajo? en vez de dejarlo solo en una linea..

Eleкtro

Cita de: $Edu$ en 19 Noviembre 2011, 04:32 AM
porq eso q tienes no pone hacia abajo? en vez de dejarlo solo en una linea..

se me habia ocurrido pero de todas formas... no veo como "separar" cada una de las letras de ese texto  >:(

gracias por contestar









leogtz

Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Eleкtro









Eleкtro

#6
lo único malo de aquel script, es que no imprime los espacios :/

Alguien tiene idea de como arreglarlo?:



Código (dos) [Seleccionar]
::autor CarlitoS.dll
@echo off
mode con cols=100
mode con lines=20

call :SLOW aaa     aaaa           aaaa
echo+
echo+
call :SLOW quiero un espacio
pause>nul
goto:eof


:SLOW
set palabra=%*
if not defined palabra (goto:eof)
set palabra=%palabra: =_%
call:length %palabra%
set /a contt=0
:loopt
call :SLOW1 %%palabra:~%contt%,1%%
set /a contt +=1
if %contt% leq %tam% (goto:loopt)
goto:eof
:SLOW1
set char=%1
if [%char%]==[_] (set char= )
<nul (set /p msg=%char%)
ping -n 1 127.0.0.0 -w 1>nul 2>&1
goto:eof
:length
set argl=%*
if not defined argl (goto :eof)
set wordl=%argl%
set /a contl=0
:loopl
if not defined wordl (goto endl)
set wordl=%wordl:~1%
set /a contl +=1
goto loopl
:endl
set tam=%contl%
goto :eof







No se si en otros windows funciona, pero en win 7 no

el fallo está aqui:

Código (dos) [Seleccionar]
:tpwrtr1
set char=%1
if [%char%]==[_] (set char= )
<nul (set /p msg=%char%)
goto:eof


He intentado modifiar esa parte de mil formas, pero no consigo que "reconozca" el espacio :/




EDITO: Es que es increible!!!! el code original debería ir, y ni cambiandolo así:


Código (dos) [Seleccionar]
:SLOW1
set char=%1

if not defined char (
<nul set /p "msg=%1 "
) ELSE (
<nul set /p "msg=%1"
)
goto:eof



Ni así!:

Código (dos) [Seleccionar]
Set "Space= "

:SLOW1
set char=%1

if not defined char (
<nul set /p "msg=%space%"
) ELSE (
<nul set /p "msg=%1"
)
goto:eof


Me estoy desesperando, siempre me lo escribe todo junto  >:D








Eleкtro

me han pasado este script, más sencillo, pero tampoco imprime los espacios (al menos en windows 7)

Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion

::aqui le decimos que queremos que escriba
call:slowrite escribiendo leeento
pause>nul
exit


:: iniciamos la función de escribir
:slowrite
set parm=%*
:write
if "%parm%"=="" goto:eof
set /p=!parm:~0,1!<nul
set parm=%parm:~1%
ping -n 1 127.0.0.0 -w 1>nul 2>&1
ping -n 1 127.0.0.0 -w 1>nul 2>&1
goto :write









leogtz

#8
Prueba lo siguiente:

Código (bash) [Seleccionar]
@echo off
REM Echo Dinamico by Fhaker
REM Optimized by ::SmartGenius::
copy %0 tempcode.txt
cls
set /p a=Echo Dinamico:
set b=
goto start
:start
set /a f=%f%+1
if %f%==1 echo ::Inicio Code Generado >>%0
set h=%a:~0,
set l=%h%%f%%o%
echo :menu%f% >>%0
echo cls >>%0
echo set b=%%%l%%% >>%0
echo echo %b%_ >>%0
echo if "%b%"=="%a% " goto fin >>%0
echo goto start >>%0
ping -n 2 0.0.0.0 >nul
goto menu%f%

:fin
pause
exit


Aquí está lo que buscas:

http://www.portalhacker.net/index.php?topic=79814.0
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Eleкtro

Buf!

Vale, el método lo entiendo, copia unas cosas dentro del mismo batch y hace unos "goto" que hacen "CLS" y muestran cada vez la frase con 1 caracter más.

supongo que intentar escribir varías lineas con ese método, es imposible... Lo he modificado un poco pero no puedo

PD: uso nircmd y colous en el script

PD2: he probado otro script de esa página, pero hace casi lo mismo que este así que solo puedo escribir una línea.   >:(

Código (dos) [Seleccionar]
@echo off
Set Batch=%0

CALL :SLOW Hola como estan?
Echo.
CALL :SLOW Gracias Leo xD
pause >NUL

:SLOW
If not defined Batch (Goto:EOF)
set a=%*
set b=
goto :start


:start
set /a f=%f%+1
if %f%==1 echo ::Inicio Code Generado >>%batch%
set h=%a:~0,
set l=%h%%f%%o%
echo :menu%f% >>%batch%
echo cls >>%batch%
echo echo+ >>%batch%
echo set b=%%%l%%% >>%batch%
echo Colous writesec "[11] %b%">>%batch%
echo if "%b%"=="%a% " Goto :FIN>>%batch%
echo goto :start>>%batch%
nircmd wait 100
goto menu%f%


:fin
set a=
set b=
set f=
set l=
goto :eof