Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: Eleкtro en 19 Noviembre 2011, 00:41 AM

Título: [ BATCH ] Efecto visual de escribir lento?
Publicado por: Eleкtro en 19 Noviembre 2011, 00:41 AM
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...

Título: Re: [ BATCH ] Efecto visual de escribir lento?
Publicado por: $Edu$ en 19 Noviembre 2011, 04:32 AM
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..
Título: Re: [ BATCH ] Efecto visual de escribir lento?
Publicado por: Eleкtro en 19 Noviembre 2011, 04:59 AM
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
Título: Re: [ BATCH ] Efecto visual de escribir lento?
Publicado por: Darioxhcx en 19 Noviembre 2011, 22:48 PM
algo asi ?
http://foro.elhacker.net/scripting/batch_funcion_maquina_de_escribir-t225483.0.html
Título: Re: [ BATCH ] Efecto visual de escribir lento?
Publicado por: leogtz en 20 Noviembre 2011, 01:33 AM
Me ha ganado la respuesta Dariohxcx :p
Título: Re: [ BATCH ] Efecto visual de escribir lento?
Publicado por: Eleкtro en 20 Noviembre 2011, 01:35 AM
Cita de: Darioxhcx en 19 Noviembre 2011, 22:48 PM
algo asi ?
http://foro.elhacker.net/scripting/batch_funcion_maquina_de_escribir-t225483.0.html

justo lo que andaba buscando, buenisimo!!!


gracias a los 3 por el interés.
Título: Re: (Solucionado) [ BATCH ] Efecto visual de escribir lento?
Publicado por: Eleкtro en 20 Noviembre 2011, 02:01 AM
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
Título: Re: [ BATCH ] Efecto visual de escribir lento?
Publicado por: Eleкtro en 20 Noviembre 2011, 04:37 AM
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

Título: Re: [ BATCH ] Efecto visual de escribir lento?
Publicado por: leogtz en 20 Noviembre 2011, 04:51 AM
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 (http://www.portalhacker.net/index.php?topic=79814.0)
Título: Re: [ BATCH ] Efecto visual de escribir lento?
Publicado por: Eleкtro en 20 Noviembre 2011, 11:07 AM
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
Título: Re: [ BATCH ] Efecto visual de escribir lento?
Publicado por: $Edu$ en 20 Diciembre 2011, 18:29 PM
Aca encontre el codigo en mi pendrive, por si sirve de algo..

Código (dos) [Seleccionar]


   @echo off
call:put Me canse de escribir tantas lineas ...
call:put Este es el typewritter effect reloaded
call:put o echo dinamico xD
>nul,pause
goto:eof

:put
if,not,defined,.m_,set.m_=%*&if,not,defined,.m_,goto:eof
<nul,set/p.m_=%.m_:~0,1%&>nul,ping -n 1 0&set.m_=%.m_:~1%&if,defined,.m_ (goto:put),else,(echo.)
goto:eof
Título: Re: [ BATCH ] Efecto visual de escribir lento?
Publicado por: Eleкtro en 23 Diciembre 2011, 19:04 PM
Cita de: $Edu$ en 20 Diciembre 2011, 18:29 PM
Aca encontre el codigo en mi pendrive, por si sirve de algo..

Código (dos) [Seleccionar]


   @echo off
call:put Me canse de escribir tantas lineas ...
call:put Este es el typewritter effect reloaded
call:put o echo dinamico xD
>nul,pause
goto:eof

:put
if,not,defined,.m_,set.m_=%*&if,not,defined,.m_,goto:eof
<nul,set/p.m_=%.m_:~0,1%&>nul,ping -n 1 0&set.m_=%.m_:~1%&if,defined,.m_ (goto:put),else,(echo.)
goto:eof


Gracias por el code pero no me sirve, ese code no escribe los espacios (Supongo que a ti si, en windows xp si), de todas formas ese problema ya me ayudaron a resolverlo xD ahora estoy estancado en no poder escribir más de una línea  :-[

un saludo
Título: Re: [ BATCH ] Efecto visual de escribir lento?
Publicado por: PedroDJavier en 20 Mayo 2014, 21:03 PM
Buenas. Siento revivir un post tan antiguo pero como (creo) que conozco la solucion me parecio oportuno postear.

Este seria el codigo:


@echo off
echo P
timeout /t 2 >nul
cls
echo Pe
timeout /t 2 >nul
cls
echo Ped
timeout /t 2 >nul
cls
echo Pedr
timeout /t 2 >nul
cls
echo Pedro
pause >nul


Imprimiria en 10 segundos la palabra Pedro a 2 segundos por letra;
El comando timeout /t "segundos" es un comando muy preciso para esperar X tiempo, es mejor que el ping LOCALHOST /N "tiempo" que ademas es un truco muy "sucio"

Espero haber ayudado, aportando 2 cosas nuevas a la comunidad. :D
Un saludo

PedroDJavier

PD: preguntando al principio al usuario que es lo que quiere escribir y usando extraccion de caracteres podemos hacer cosas chulas xD

EDIT: Se  me olvido comentar que funciona con los espacios :D aveces la solucion esta en lo simple !
Título: Re: [ BATCH ] Efecto visual de escribir lento?
Publicado por: the-bird-of-the-hermes en 21 Mayo 2014, 16:45 PM
podrias modificar este programa en c++ las variables que se escribren por espacios en blanco supongo pero ya no seria puro batch

http://foro.elhacker.net/scripting/batch_c_programa_para_efecto_typewritter-t410038.0.html;msg1924932#msg1924932 (http://foro.elhacker.net/scripting/batch_c_programa_para_efecto_typewritter-t410038.0.html;msg1924932#msg1924932)
Título: Re: [ BATCH ] Efecto visual de escribir lento?
Publicado por: ramiro069 en 24 Noviembre 2014, 00:24 AM
CitarBuenas. Siento revivir un post tan antiguo pero como (creo) que conozco la solución me pareció oportuno postear.
Ya somos 2, he modificado el el script que no imprimía los espacios para que si lo haga:

Código (bash) [Seleccionar]


@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
set /a contt2=0
set /a cantcopy=1
if [%tam%] gtr [0] (set /a contt2 +=1)
:loopt
call :AUXILIAR %%palabra:~%contt2%,1%%
if [%aux%]==["_"] (
set /a contt2 +=1
set /a cantcopy +=1
) else (goto :end1)
if %contt2% leq %tam% (goto :loopt)
:end1
call :SLOW1 %%palabra:~%contt%,%cantcopy%%%
set /a contt +=%cantcopy%
set /a contt2 +=1
set /a cantcopy=1
if %contt% leq %tam% (goto :loopt)
goto :eof
:SLOW1
set char="%1"
set char=%char:_= %
<nul (set /p msg=%char%)
set /a aux2=%cantcopy%
:loopt1
ping -n 1 127.0.0.0 -w 1>nul 2>&1
ping -n 1 127.0.0.0 -w 1>nul 2>&1
set /a aux2 -=1
if %aux2% gtr 0 (goto :loopt1)
goto :eof
:length
set argl=%*
if not defined argl (goto :eof)
set wordl=%argl%
set /a contl=0
:loopt2
if not defined wordl (goto :end2)
set wordl=%wordl:~1%
set /a contl +=1
goto :loopt2
:end2
set tam=%contl%
goto :eof
:AUXILIAR
set aux="%1"
if not defined aux (goto:eof)
goto :eof



Como veis para poder lograrlo hay que enviar los espacios a la vez que la letra anterior, por lo que si aumentamos mucho el tiempo de espera se verá que los espacios los escribes rápido y las letras despacio, pero es mejor que nada y ademas soporta las multilineas.

Un saludo, espero que a alguien le resulte útil