Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: carlosguay en 28 Noviembre 2009, 11:13 am



Título: Bat que no funciona al compilarlo
Publicado por: carlosguay en 28 Noviembre 2009, 11:13 am
Hola de nuevo, otra preguntita.

Vereis hace unos dias me baje de aqui un codigo de una maquina de escribir, este.


Código:
@echo off
echo.
echo.
echo.
echo.
echo.
call:tpwrtr AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
call:sleep 2
echo.
echo.
call:tpwrtr BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
call:sleep 2
echo.
echo.
call:tpwrtr CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
call:sleep 2
echo.
echo.
call:tpwrtr DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
call:sleep 2
pause>nul
goto:eof
:tpwrtr
set palabra=%*
if not defined palabra (goto:eof)
set palabra=%palabra: =_%
call:length %palabra%
set /a contt=0
:loopt
call :tpwrtr1 %%palabra:~%contt%,1%%
set /a contt +=1
if %contt% leq %tam% (goto:loopt)
goto:eof
:tpwrtr1
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
:sleep
if "%1"=="" (goto :eof)
set /a limit=0
set /a limit=%1
if %limit% LEQ 0 (goto :eof)
set /a cont=0
:time
set mirror1=%time:~-4,1%
:increment
set mirror2=%time:~-4,1%
if not %mirror2%==%mirror1% (goto count)
goto increment
:count
set /a cont +=1
if "%cont%"=="%limit%" (goto :eof)
goto time
goto :eof

El autor me tiene que perdonar, pero no recuerdo su nombre.

Estoy haciendo un bat, que hace varias cosas y habia pensado que para ponerlo mas bonito y mas parecido a un programa, pues entre comando y comando ir poniendo comentarios de lo que estaba haciendo en cada momento.

El resultado es que funciona perfectamente, pero al compilarlo ya no funcina, ni el bat ni el codigo que os pongo mas arriba, osea realiza todo lo demas pero la parte de la escritura, no hace nada de nada.

En fin, pues esa era la pregunta, que si veis algo raro en el codigo o si saveis porque sucede eso, ya que me interesaria compilar mi bat y ponerlo lo mas bonito posible.

Gracias y un saludo


Título: Re: Bat que no funciona al compilarlo
Publicado por: .;. en 28 Noviembre 2009, 11:40 am
¿No entiendo lo de "realiza todo lo demás pero la parte de escritura no hace nada"?

¿Qué compilador usas?


Título: Re: Bat que no funciona al compilarlo
Publicado por: carlosguay en 28 Noviembre 2009, 13:38 pm
¿No entiendo lo de "realiza todo lo demás pero la parte de escritura no hace nada"?

¿Qué compilador usas?


A ver, si me explico mejor.
La maquina de escribir que pongo mas arriba, funciona perfectamente en un bat, pero al compilarla ya no funciona.
Com el bat que tengo, me pasa exactamente igual, osea todos los comandos que lleva el bat, los realiza perfectamente una ves compilado, menos la parte de la escritura.

Por ejemplo, empiezo poniendo la IP en manual, y a continuacion mando una linea de escritura, explicando lo que esta haciendo, pues la IP se cambia, pero la linea de la escritura no la realiza, hace como si la estuviera escribiendo pero no escribe nada y a continuacion sigue com el siguiente comando.

El compilador funciona perfectamente, pues he compilado muchos bat y no tengo problemas, es este.

Citar
Untilled.bat-Quick Batch File Compiler

Espero haberme explicado mejor.

un saludo


Título: Re: Bat que no funciona al compilarlo
Publicado por: Disembowelment en 28 Noviembre 2009, 20:42 pm
El problema esta en que el Quick Batch File Compiler reemplaza los %* por %cmdln% en el bat compilado, por eso no funciona correctamente el bat al compilarlo y ejecutarlo.

Una solución es así:

Código
  1. @echo off
  2. set asterisco=*
  3. call:tpwrtr AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
  4. call:sleep 2
  5. call:tpwrtr BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
  6. call:sleep 2
  7. call:tpwrtr CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
  8. call:sleep 2
  9. call:tpwrtr DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
  10. call:sleep 2
  11. pause>nul
  12. goto:eof
  13. :tpwrtr
  14. call set palabra=%%%asterisco%
  15. if not defined palabra (goto:eof)
  16. set palabra=%palabra: =_%
  17. call:length %palabra%
  18. set /a contt=0
  19. :loopt
  20. call :tpwrtr1 %%palabra:~%contt%,1%%
  21. set /a contt +=1
  22. if %contt% leq %tam% (goto:loopt)
  23. goto:eof
  24. :tpwrtr1
  25. set char=%1
  26. if [%char%]==[_] (set char= )
  27. <nul (set /p msg=%char%)
  28. ping -n 1 127.0.0.0 -w 1>nul 2>&1
  29. goto:eof
  30. :length
  31. call set argl=%%%asterisco%
  32. if not defined argl (goto :eof)
  33. set wordl=%argl%
  34. set /a contl=0
  35. :loopl
  36. if not defined wordl (goto endl)
  37. set wordl=%wordl:~1%
  38. set /a contl +=1
  39. goto loopl
  40. :endl
  41. set tam=%contl%
  42. goto :eof
  43. :sleep
  44. if "%1"=="" (goto :eof)
  45. set /a limit=0
  46. set /a limit=%1
  47. if %limit% LEQ 0 (goto :eof)
  48. set /a cont=0
  49. :time
  50. set mirror1=%time:~-4,1%
  51. :increment
  52. set mirror2=%time:~-4,1%
  53. if not %mirror2%==%mirror1% (goto count)
  54. goto increment
  55. :count
  56. set /a cont +=1
  57. if "%cont%"=="%limit%" (goto :eof)
  58. goto time
  59. goto :eof


Título: Re: Bat que no funciona al compilarlo
Publicado por: carlosguay en 28 Noviembre 2009, 23:57 pm
Gracias amigo, era ese el problema, me a funcinado perfecto.

Un saludo.