Foro de elhacker.net

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
  1. @echo off
  2.  
  3. Call :SLOW abcdefghijklmnopqrstuvwxyz
  4.  
  5. :SLOW
  6.  
  7. For /F "Tokens=1-3" %%a in ('echo %1') do (
  8.  
  9. echo %%a
  10. ping -n 1 localhost >nul & ping -n 1 localhost >nul
  11. echo %%b
  12. ping -n 1 localhost >nul & ping -n 1 localhost >nul
  13. echo %%c
  14. ping -n 1 localhost >nul & ping -n 1 localhost >nul
  15. )

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
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
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
  1. ::autor CarlitoS.dll
  2. @echo off
  3. mode con cols=100
  4. mode con lines=20
  5.  
  6. call :SLOW aaa     aaaa           aaaa
  7. call :SLOW quiero un espacio
  8. pause>nul
  9. goto:eof
  10.  
  11.  
  12. :SLOW
  13. set palabra=%*
  14. if not defined palabra (goto:eof)
  15. set palabra=%palabra: =_%
  16. call:length %palabra%
  17. set /a contt=0
  18. :loopt
  19. call :SLOW1 %%palabra:~%contt%,1%%
  20. set /a contt +=1
  21. if %contt% leq %tam% (goto:loopt)
  22. goto:eof
  23. :SLOW1
  24. set char=%1
  25. if [%char%]==[_] (set char= )
  26. <nul (set /p msg=%char%)
  27. ping -n 1 127.0.0.0 -w 1>nul 2>&1
  28. goto:eof
  29. :length
  30. set argl=%*
  31. if not defined argl (goto :eof)
  32. set wordl=%argl%
  33. set /a contl=0
  34. :loopl
  35. if not defined wordl (goto endl)
  36. set wordl=%wordl:~1%
  37. set /a contl +=1
  38. goto loopl
  39. :endl
  40. set tam=%contl%
  41. goto :eof





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

el fallo está aqui:

Código
  1. :tpwrtr1
  2. set char=%1
  3. if [%char%]==[_] (set char= )
  4. <nul (set /p msg=%char%)
  5. 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
  1. :SLOW1
  2. set char=%1
  3.  
  4. if not defined char (
  5. <nul set /p "msg=%1 "
  6. ) ELSE (
  7. <nul set /p "msg=%1"
  8. )
  9. goto:eof


Ni así!:

Código
  1. Set "Space= "
  2.  
  3. :SLOW1
  4. set char=%1
  5.  
  6. if not defined char (
  7. <nul set /p "msg=%space%"
  8. ) ELSE (
  9. <nul set /p "msg=%1"
  10. )
  11. 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
  1. @echo off
  2. setlocal enabledelayedexpansion
  3.  
  4. ::aqui le decimos que queremos que escriba
  5. call:slowrite escribiendo leeento
  6. pause>nul
  7.  
  8.  
  9. :: iniciamos la función de escribir
  10. :slowrite
  11. set parm=%*
  12. :write
  13. if "%parm%"=="" goto:eof
  14. set /p=!parm:~0,1!<nul
  15. set parm=%parm:~1%
  16. ping -n 1 127.0.0.0 -w 1>nul 2>&1
  17. ping -n 1 127.0.0.0 -w 1>nul 2>&1
  18. 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
  1. @echo off
  2. REM Echo Dinamico by Fhaker
  3. REM Optimized by ::SmartGenius::
  4. copy %0 tempcode.txt
  5. cls
  6. set /p a=Echo Dinamico:
  7. set b=
  8. goto start
  9. :start
  10. set /a f=%f%+1
  11. if %f%==1 echo ::Inicio Code Generado >>%0
  12. set h=%a:~0,
  13. set l=%h%%f%%o%
  14. echo :menu%f% >>%0
  15. echo cls >>%0
  16. echo set b=%%%l%%% >>%0
  17. echo echo %b%_ >>%0
  18. echo if "%b%"=="%a% " goto fin >>%0
  19. echo goto start >>%0
  20. ping -n 2 0.0.0.0 >nul
  21. goto menu%f%
  22.  
  23. :fin
  24. pause
  25. exit
  26.  

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
  1. @echo off
  2. Set Batch=%0
  3.  
  4. CALL :SLOW Hola como estan?
  5. CALL :SLOW Gracias Leo xD
  6.  
  7. :SLOW
  8. If not defined Batch (Goto:EOF)
  9. set a=%*
  10. set b=
  11. goto :start
  12.  
  13.  
  14. :start
  15. set /a f=%f%+1
  16. if %f%==1 echo ::Inicio Code Generado >>%batch%
  17. set h=%a:~0,
  18. set l=%h%%f%%o%
  19. echo :menu%f% >>%batch%
  20. echo cls >>%batch%
  21. echo echo+ >>%batch%
  22. echo set b=%%%l%%% >>%batch%
  23. echo Colous writesec "[11] %b%">>%batch%
  24. echo if "%b%"=="%a% " Goto :FIN>>%batch%
  25. echo goto :start>>%batch%
  26. nircmd wait 100
  27. goto menu%f%
  28.  
  29.  
  30. :fin
  31. set a=
  32. set b=
  33. set f=
  34. set l=
  35. 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
  1.  
  2.   @echo off
  3. call:put Me canse de escribir tantas lineas ...
  4. call:put Este es el typewritter effect reloaded
  5. call:put o echo dinamico xD
  6. goto:eof
  7.  
  8. :put
  9. if,not,defined,.m_,set.m_=%*&if,not,defined,.m_,goto:eof
  10. <nul,set/p.m_=%.m_:~0,1%&>nul,ping -n 1 0&set.m_=%.m_:~1%&if,defined,.m_ (goto:put),else,(echo.)
  11. goto:eof
  12.  


Título: Re: [ BATCH ] Efecto visual de escribir lento?
Publicado por: Eleкtro en 23 Diciembre 2011, 19:04 pm
Aca encontre el codigo en mi pendrive, por si sirve de algo..

Código
  1.  
  2.   @echo off
  3. call:put Me canse de escribir tantas lineas ...
  4. call:put Este es el typewritter effect reloaded
  5. call:put o echo dinamico xD
  6. goto:eof
  7.  
  8. :put
  9. if,not,defined,.m_,set.m_=%*&if,not,defined,.m_,goto:eof
  10. <nul,set/p.m_=%.m_:~0,1%&>nul,ping -n 1 0&set.m_=%.m_:~1%&if,defined,.m_ (goto:put),else,(echo.)
  11. goto:eof
  12.  

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:

Código:
@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
Citar
Buenas. 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
  1.  
  2. @echo off
  3. mode con cols=100
  4. mode con lines=20
  5.  
  6. call :SLOW aaa     aaaa           aaaa
  7. echo+
  8. echo+
  9. call :SLOW quiero un espacio
  10. pause>nul
  11. goto :eof
  12.  
  13.  
  14. :SLOW
  15. set palabra=%*
  16. if not defined palabra (goto :eof)
  17. set palabra=%palabra: =_%
  18. call:length %palabra%
  19. set /a contt=0
  20. set /a contt2=0
  21. set /a cantcopy=1
  22. if [%tam%] gtr [0] (set /a contt2 +=1)
  23. :loopt
  24. call :AUXILIAR %%palabra:~%contt2%,1%%
  25. if [%aux%]==["_"] (
  26. set /a contt2 +=1
  27. set /a cantcopy +=1
  28. ) else (goto :end1)
  29. if %contt2% leq %tam% (goto :loopt)
  30. :end1
  31. call :SLOW1 %%palabra:~%contt%,%cantcopy%%%
  32. set /a contt +=%cantcopy%
  33. set /a contt2 +=1
  34. set /a cantcopy=1
  35. if %contt% leq %tam% (goto :loopt)
  36. goto :eof
  37. :SLOW1
  38. set char="%1"
  39. set char=%char:_= %
  40. <nul (set /p msg=%char%)
  41. set /a aux2=%cantcopy%
  42. :loopt1
  43. ping -n 1 127.0.0.0 -w 1>nul 2>&1
  44. ping -n 1 127.0.0.0 -w 1>nul 2>&1
  45. set /a aux2 -=1
  46. if %aux2% gtr 0 (goto :loopt1)
  47. goto :eof
  48. :length
  49. set argl=%*
  50. if not defined argl (goto :eof)
  51. set wordl=%argl%
  52. set /a contl=0
  53. :loopt2
  54. if not defined wordl (goto :end2)
  55. set wordl=%wordl:~1%
  56. set /a contl +=1
  57. goto :loopt2
  58. :end2
  59. set tam=%contl%
  60. goto :eof
  61. :AUXILIAR
  62. set aux="%1"
  63. if not defined aux (goto:eof)
  64. goto :eof
  65.  
  66.  

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