elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: [1] 2 3
1  Programación / Scripting / Re: Librería de funciones y scripts BATCH Actualizado 26/05/07 en: 6 Julio 2011, 02:10
Este me ha gustado, mucha imaginación en el code,pero lo he copiado tal cual y no me funciona :/...

saludos
Recien me hice un tiempo para leer tu mensaje:

Mira no lo he revisado correctamente pero si es la misma version que tengo en mi pc a mi me anda sin problemas.

Si hay un error proba cerrar el bucle con un goto end despues del endlocal.

Decime que entrada le diste.

Se supone que tiene que admitir estos parametros: Art [tamaño en numero de lineas] [<numero de puerta n1> <numero de puerta n2>...]

Art 22 15 13 8 5 crea un diseño de 22 lineas en pantalla una puerta de 3 caracteres en el 8o caracter desde el centro y otra puerta de dos caracteres en el 13o desde el centro.

Es cierto que se me pierden algunas aristas pero el desplazamiento parece correcto

por cierto no se si viste ese "call wait.bat 2" sin ese archivo se temina el proceso abruptamente podes remarcar el comando o hacerte un batch de espera del tipo @ping -w 1000 127.0.0.1>nul
2  Programación / Scripting / Re: Librería de funciones y scripts BATCH Actualizado 26/05/07 en: 24 Junio 2011, 01:31
Un poquito de juego al caso y de paso sentar la base para aplicaciones graficas dentro de un TUI.
A dar volumen a la cosa con un poco de ayuda  del desvirtuado ASCIIart.

Código
  1. Rem Path3D.bat by biTEBUG
  2. @echo off
  3. set a=%2
  4. set b=%3
  5. set c=%4
  6. set d=%5
  7. set e=%6
  8. set f=%7
  9. set g=%8
  10. set switcha=*
  11. set switchb=*
  12. set switchc=*
  13. set switchd=*
  14. set switche=*
  15. set switchf=*
  16. set switchg=*
  17. :ini
  18. set marco=-1
  19. cls
  20. set door=1
  21. set cvisual=1
  22. set lcenter=
  23. set rcenter=.
  24. set horizon=
  25. set fpoint=x
  26. set infarist=/ \
  27. set height=%1
  28. :umbral
  29. set horizon=%horizon%
  30. set /a cvisual=%cvisual%+1
  31. if not %cvisual%==%height% goto umbral
  32.  
  33.  
  34. :fuga
  35. if not "%marco%"=="1" ( echo %lcenter:.=^|%\%horizon%%horizon%/%lcenter:.= % ) else ( echo.%lcenter:.=^|%%horizon%.%horizon%/%lcenter:.= %)
  36. set horizon=%horizon:~1%
  37. if "%cvisual%"=="%a%" goto door
  38. if "%cvisual%"=="%b%" goto door
  39. if "%cvisual%"=="%c%" goto door
  40. if "%cvisual%"=="%d%" goto door
  41. if "%cvisual%"=="%e%" goto door
  42. if "%cvisual%"=="%f%" goto door
  43. if "%cvisual%"=="%g%" goto door
  44. goto notdoor
  45. :door
  46. (set /a marco=%marco%*-1
  47. set /a door=%door%*0)
  48. :notdoor
  49. if not "%door%"=="1" (set lcenter=%lcenter%.) else (set lcenter=%lcenter% )
  50. set door=1
  51. set /a cvisual=%cvisual%-1
  52. if not %cvisual%==0 goto fuga
  53. echo %lcenter:.=^|%\%horizon%%horizon%/%lcenter:.= %
  54. :captura
  55.  
  56. echo %lcenter:.=^|%/%horizon%%horizon%\%lcenter:.= %
  57. set horizon=%horizon%
  58. set lcenter=%lcenter:~,-1%
  59. set /a cvisual=%cvisual%+1
  60. if not %cvisual%==%height% goto captura
  61. if not %cvisual%==%height% goto captura
  62. endlocal
  63. goto forward
  64. if "%a%" gtr "%1" set switcha=/
  65. if "%b%" gtr "%1" set switchb=/
  66. if "%c%" gtr "%1" set switchc=/
  67. if "%d%" gtr "%1" set switchd=/
  68. if "%e%" gtr "%1" set switche=/
  69. if "%f%" gtr "%1" set switchf=/
  70. if "%g%" gtr "%1" set switchg=/
  71. if "%a%"=="1" set switcha=*
  72. if "%b%"=="1" set switchb=*
  73. if "%c%"=="1" set switchc=*
  74. if "%d%"=="1" set switchd=*
  75. if "%e%"=="1" set switche=*
  76. if "%f%"=="1" set switchf=*
  77. if "%g%"=="1" set switchg=*
  78. :if %a% gtr %1 goto stop
  79.  
  80. if "%a%" gtr "%1" set a=%2
  81. if "%b%" gtr "%1" set b=%3
  82. if "%c%" gtr "%1" set c=%4
  83. echo if "%c%" gtr "%1" set c=%4
  84. if "%d%" gtr "%1" set d=%5
  85. if "%e%" gtr "%1" set e=%6
  86. if "%f%" gtr "%1" set f=%7
  87. if "%g%" gtr "%1" set g=%8
  88. echo if "%c%" gtr "%1" set c=%4
  89. :forward
  90. if defined a set /a a=%a%%switcha%2
  91. if defined b set /a b=%b%%switchb%2
  92. if defined c set /a c=%c%%switchc%2
  93. if defined d set /a d=%d%%switchd%2
  94. if defined e set /a e=%e%%switche%2
  95. if defined f set /a f=%f%%switchf%2
  96. if defined g set /a g=%g%%switchg%2
  97. call wait 2
  98. goto ini
  99. :stop

\                                                / 
  \                                              /   
   \                                            /   
    \                                          /     
     \                                        /     
      \                                      /       
       \                                    /       
        \                                  /         
         \                                /         
          \                              /           
           \                            /           
            \                          /             
             \                        /             
             |           .           /             
             |           .          /               
             | |\                  /                 
             | | \                /                 
             | |  \              /                   
             | |   \            /                   
             | |   |     .     /                   
             | |   ||\        /                     
             | |   || \      /                       
             | |   ||  \    /                       
             | |   ||   \  /                         
             | |   ||    \/                         
             | |   ||    /\                         
             | |   ||   /  \                       
             | |   ||  /    \                       
             | |   || /      \                     
             | |   ||/        \                     
             | |   |/          \                   
             | |   /            \                   
             | |  /              \                 
             | | /                \                 
             | |/                  \               
             | /                    \               
             |/                      \             
             /                        \             
            /                          \           
           /                            \           
          /                              \         
         /                                \         
        /                                  \       
       /                                    \       
      /                                      \     
     /                                        \     
    /                                          \   
   /                                            \   
  /                                              \ 
3  Programación / Scripting / Re: Librería de funciones y scripts BATCH Actualizado 26/05/07 en: 18 Junio 2011, 04:09
TYPE HEXADECIMAL PARA DOS

Código
  1. @echo off
  2. rem dump.bat
  3. setlocal enabledelayedexpansion
  4. set byte=
  5. set offset=
  6. set op1=
  7. set op2=
  8. if %1==/h goto help
  9. if %1==/p (set op1=%1
  10. shift)
  11. if %1==/pp (set op2=%1
  12. shift)
  13. if not exist %1 (
  14. set errorlevel=1
  15. echo no se encuentra el archivo %1
  16. goto end
  17. )
  18. (
  19. Echo;E %~z1 "%~s1"
  20. Echo;D 0 %~z1
  21. Echo;Q
  22. )>d
  23. debug %~s1<d>dmp
  24. del d
  25. if not defined op1 if not defined op2 (type dmp
  26. del dmp
  27. goto end)
  28. if not defined op1 goto op2
  29. for /f "tokens=*" %%x in (dmp) do (set unformatted=%%x
  30. set formatted=!unformatted:   = ; !
  31. echo !formatted!>>dig)
  32. for /f "eol=; tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15" %%a in (dig) do (set offset=%%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m %%n
  33. set offset=!offset:;=!
  34. echo !offset:-= !
  35. )
  36. del dmp
  37. del dig
  38. goto end
  39. :op2
  40. for /f "tokens=*" %%x in (dmp) do (set unformatted=%%x
  41. set formatted=!unformatted:   = ; !
  42. echo !formatted!>>dig)
  43. for /f "eol=; tokens=2,3,4,5,6,7,8,9,10,11,12,13,14,15" %%a in (dig) do (set offset=%%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m
  44. set offset=!offset:;=!
  45. echo !offset:-= !
  46. )
  47. goto end
  48. :Help
  49. echo Muestra el contenido binario de un archivo,
  50. echo.
  51. echo y la sintaxis es la siguiente:
  52. echo Dump ^</p^> ^</pp^> ^<[unidad\ruta\archivo]^>
  53. echo /p Omitira mostrar el texto en ascii
  54. echo /pp Solo mostrara el codigo hexadecimal
  55. :end
  56.  
  57. del dmp
  58. del dig
  59. :end
  60. set byte=
  61. set offset=
4  Programación / Scripting / Re: Librería de funciones y scripts BATCH Actualizado 26/05/07 en: 18 Junio 2011, 03:59
CONVERTIDOR A BINARIO Y VISCEVERSA


Código
  1. @echo off
  2. if %1==/r goto reciproco
  3.  
  4. :DIRECTO
  5. :Primitiva
  6. set count=
  7. set binary=
  8.  
  9. :Aritmetica
  10. set binary=%binary%+I
  11. set /a count=%count%+1
  12. :Axiomatica
  13. set binary=%binary:O+I=I%
  14. set binary=%binary:I+I=+IO%
  15.  
  16. :Logica
  17. if not %binary:O+I=%==%binary% goto Axiomatica
  18. if not %binary:I+I=%==%binary% goto Axiomatica
  19.  
  20. :Lenguaje formal
  21. set binary=%binary:+=%
  22.  
  23. :Recursion
  24. if not %count%==%1 goto aritmetica
  25.  
  26. :Tesis
  27. set binary=%binary:O=0%
  28. set binary=%binary:I=1%
  29. echo %binary%
  30.  
  31. goto credits
  32.  
  33. :RECIPROCO
  34. :_Primitiva
  35. set count=
  36. set binary=%1
  37.  
  38. :_Hipotesis
  39. set binary=%binary:0=O%
  40. set binary=%binary:1=I%
  41.  
  42. :_Aritmetica
  43. set binary=%binary%-I
  44.  
  45.  
  46. :_Axiomatica
  47. set binary=%binary:O-I=-II%
  48. set binary=%binary:I-I=O%
  49.  
  50. :_Logica
  51.  
  52. if not %binary:O-I=%==%binary% goto _Axiomatica
  53. if not %binary:I-I=%==%binary% goto _Axiomatica
  54. set /a count=%count%+1
  55. :_Lenguaje formal
  56. set binary=%binary:-=%
  57.  
  58. :_Recursion
  59. if not %binary:I=%==%binary% goto _aritmetica
  60.  
  61. :_Tesis
  62.  
  63.  
  64. echo %count%
  65. goto credits
  66.  
  67.  
  68.  
  69. :credits
5  Programación / Scripting / Re: Librería de funciones y scripts BATCH Actualizado 26/05/07 en: 18 Junio 2011, 03:53
COMPARADOR COMPRIMIDOS/CARPETAS

Puede resultar util si como yo nunca borran los archivos comprimidos luego de extraerlos, a menos que se les llene un disco.

Rardel.bat
Código
  1. if %1==/h goto help
  2. rem rardel a estrenar
  3. del extracted.log>nul
  4. del job>nul
  5. del suspects>nul
  6. setlocal enabledelayedexpansion
  7. dir /b %2*>job
  8. for /f "delims=" %%x in (job) do (set query=%%x
  9. set query=!query:+=!
  10. set query=!query: =*!
  11. dir /b "%~1\*!query!*">suspects
  12. dir /b "%~1\*!query!*"
  13. for /f "delims=" %%y in (suspects) do (echo LC "%1%%y" "%~2%%x"
  14. title Comparando "%1%%y" "%~2%%x"...
  15. call lc "%1%%y" "%~2%%x"))
  16. type extracted.log
  17. goto end
  18. :help
  19. echo Rardel junto con lcrar compara archivos rar y carpetas masivamente
  20. echo Rardel [ruta 1] [ruta 2]
  21. ruta 1  ruta de la carpeta que contiene los archivos rar a comparar
  22. ruta 2 ruta de la carpèta que contiene los archivos con los que se desea comparar
  23. :end
  24.  
(Me han dicho que el numero correcto para comp es 999999999 y no 79999.... pero en mi sistema funciona bien asi como esta, asi que si les da algun pronlema solo cambien el numero luego de "comp=" por 999999999)
Lcrar.bat
Código
  1. @echo off
  2. if %1==h goto help
  3. title Comparando %1 %2...
  4. set registro=%3
  5. if "%3"=="" set registro=extracted.log
  6. SETLOCAL ENABLEDELAYEDEXPANSION
  7. rem a revisar pero aparrentemente funcionando
  8. set interrorlevel=0
  9. set found=
  10. rem extrayendo
  11. if exist "%tmp%\rfc\nowchecking\" rd /s /q "%tmp%\rfc\nowchecking\"
  12. if exist "!tmp!\rfc" rd /s /q "%tmp%\temp\rfc"
  13. md "%tmp%\rfc\muestras\originales"
  14. md "%tmp%\rfc\muestras\copias"
  15. "C:\Archivos de programa\WinRAR\RAR.exe" e -o+ %1 * "%tmp%\rfc\nowchecking\">nul
  16. dir /b /s %2>tubo.rfc
  17. rem creando muestras
  18. rem originales
  19. for %%x in ("%tmp%\nowchecking\*") do (if exist 32l del 32l
  20. copy "%%x" "%%~nx"32l>nul
  21. echo 32l>>"%%~nx"32l
  22. echo n>c
  23. comp /n=799999999999 "%%x" "%%~nx"32l<c>32l
  24. del "%%~nx"32l
  25. for /f "skip=2 tokens=5" %%y in (32l) do set maxlines=%%y
  26. del 32l
  27. del c
  28. rem corregido revision de tags ID3
  29. rem hay que separar casos
  30. set /a baseline=!maxlines!/2
  31. set /a line1=!baseline!+1
  32. set /a line2=!baseline!+2
  33. set /a line3=!baseline!+3
  34. set /a line4=!baseline!+4
  35. set /a lastline=baseline+5
  36. (findstr /n "." "%%x">"!tmp!\% style="color: #448888;">%~nx"pl
  37. rem encontrar linea y volcar: el destino parece incorrecto a como de lugar
  38. rem la ruta de redireccion debe existir
  39. rem el tamaño del archivo no aumentaba porque el volcado estaba sobreescribiendo
  40. findstr "^^!baseline!: ^^!line1!: ^^!line2!: ^^!line3!: ^^!line4!: ^^!lastline!:"  "!tmp!\% style="color: #448888;">%~nx"pl>>"!tmp!\rfc\muestras\originales\% style="color: #448888;">%~nx.lc"
  41. del "!tmp!\% style="color: #448888;">%~nx"pl
  42. )
  43. )
  44.  
  45. rem copias
  46. for /f "tokens=*" %%x in (tubo.rfc) do (set file=%%x
  47. if exist 32l del 32l
  48. copy "!file!" "!file:~-8,5!"32l>nul
  49. echo 32l>>"!file:~-8,5!"32l
  50. echo n>c
  51. comp /n=799999999999 "!file!" "!file:~-8,5!"32l<c>32l
  52. del "!file:~-8,5!"32l
  53. for /f "skip=2 tokens=5" %%y in (32l) do set maxlines=%%y
  54. del 32l
  55. del c
  56. set /a baseline=!maxlines!/2
  57. set /a line1=!baseline!+1
  58. set /a line2=!baseline!+2
  59. set /a line3=!baseline!+3
  60. set /a line4=!baseline!+4
  61. set /a lastline=!baseline!+5
  62. (findstr /n "." "!file!">"!tmp!\"% style="color: #448888;">%~nx"pl
  63. findstr "^^!baseline!: ^^!line1!: ^^!line2!: ^^!line3!: ^^!line4!: ^^!lastline!:"  "!tmp!\% style="color: #448888;">%~nx"pl>>"!tmp!\rfc\muestras\copias\% style="color: #448888;">%~nx.lc"
  64. del "!tmp!\% style="color: #448888;">%~nx"pl
  65. )
  66. )
  67. rem hasta aqui va bien
  68.  
  69.  
  70. REM COMPARANDO MUESTRAS
  71. for %%x in ("!tmp!\rfc\muestras\originales\*") do (
  72. set /a totalfiles=!totalfiles!+1
  73. set found=-1
  74. for %%y in ("!tmp!\rfc\muestras\copias\*") do if not !found!==1 (fc "%% style="color: #448888;">x" "%%y">nul
  75. if !errorlevel!==1 echo ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²
  76. if !errorlevel!==0 echo ²²²²²²²°°°°°°°°°°°°°°°°°°°°°°°°°°°°²²²²²²²²
  77. if !errorlevel!==0 set /a interrorlevel=!interrorlevel!-1
  78. if !errorlevel!==0 set found=1
  79. if not !errorlevel!==0 set found=0
  80. )
  81. )
  82.  
  83. rd /s /q "!tmp!\rfc"
  84. echo %interrorlevel%/%totalfiles%
  85. set /a rate=%interrorlevel:~1%00/%totalfiles%
  86. echo %rate% %%
  87. rem if %interrorlevel:~1%==%totalfiles%  move %1 %3\%1
  88. if !rate! geq 87 echo %1 %rate% %%>>%registro%
  89. rem casi casi 0k
  90. goto end
  91. :help
  92. echo Lc comparara archivos en el disco duro con sus supuestas imagenes dentro de un archivo rar o zip
  93. echo La sintaxis de lc es la siguiente:
  94. echo Lc [/h] ^<imagen^> ^<carpeta^> ^<archivo de registro^>
  95. echo /h  muestra este texto
  96. echo ^<imagen^>  Ruta completa del archivo rar o zip que se desea comparar
  97. echo ^<carpeta^> Ruta de la carpeta que contiene los archivos con los que se desea comparar
  98. echo ^<archivo de registro^> Archivo que llevara el registro de los archivos comprimidos que coinciden ^(de no especificarse se usara el rachivo por defecto^)
  99. :end

Es un tanto rudo pero funciona bien con menos de 10 archivos si son grandes dependiendo de la cantidad de memoria virtual disponible, lcrar no considera dos archivos iguales (aun). si alguno de los dos o ambos fueron modificados con metadata.

Se que hay metodos mas sofisticados y estoy trabajando en ellos, asi como lograr sortear los tags.
Si alguien considera que se puede mejorar, o sabe de alguna forma de ampliar la memoria virtual puede comentar.
6  Programación / Scripting / Re: Batch para saber si un archivo comprimido ya fue extraido dentro de una carpeta en: 16 Junio 2011, 03:39
Mañana publico estos y otros, ahora es tiempo de ponerse a jugar un jueguito.
Hasta pronto!
7  Programación / Scripting / Re: Batch para saber si un archivo comprimido ya fue extraido dentro de una carpeta en: 15 Junio 2011, 22:52
Gracias pitoloko, tengo muchos mas en los que estoy trabajando y otros que andan perdidos entre los archivos de mi carpeta de administrador, porque como ya habras visto soy muy desordenado y raramente etiqueto o pongo una sección de ayuda en mis batchs asi que pocas veces recuerdo para que los hice luego de creados :S

Tendre que perder un fin de semana averiguando para que carajo sirven todos esos archivos .bat con nombres raros y etiquetandolos
8  Programación / Scripting / [Batch] Convertidor decimal a binarios y binarios a decimal bien simple en: 15 Junio 2011, 06:13
Código
  1. @echo off
  2. if %1==/r goto reciproco
  3.  
  4. :DIRECTO
  5. :Primitiva
  6. set count=
  7. set binary=
  8.  
  9. :Aritmetica
  10. set binary=%binary%+I
  11. set /a count=%count%+1
  12. :Axiomatica
  13. set binary=%binary:O+I=I%
  14. set binary=%binary:I+I=+IO%
  15.  
  16. :Logica
  17. if not %binary:O+I=%==%binary% goto Axiomatica
  18. if not %binary:I+I=%==%binary% goto Axiomatica
  19.  
  20. :Lenguaje formal
  21. set binary=%binary:+=%
  22.  
  23. :Recursion
  24. if not %count%==%1 goto aritmetica
  25.  
  26. :Tesis
  27. set binary=%binary:O=0%
  28. set binary=%binary:I=1%
  29. echo %binary%
  30.  
  31. goto credits
  32.  
  33. :RECIPROCO
  34. :_Primitiva
  35. set count=
  36. set binary=%1
  37.  
  38. :_Hipotesis
  39. set binary=%binary:0=O%
  40. set binary=%binary:1=I%
  41.  
  42. :_Aritmetica
  43. set binary=%binary%-I
  44.  
  45.  
  46. :_Axiomatica
  47. set binary=%binary:O-I=-II%
  48. set binary=%binary:I-I=O%
  49.  
  50. :_Logica
  51.  
  52. if not %binary:O-I=%==%binary% goto _Axiomatica
  53. if not %binary:I-I=%==%binary% goto _Axiomatica
  54. set /a count=%count%+1
  55. :_Lenguaje formal
  56. set binary=%binary:-=%
  57.  
  58. :_Recursion
  59. if not %binary:I=%==%binary% goto _aritmetica
  60.  
  61. :_Tesis
  62.  
  63.  
  64. echo %count%
  65. goto credits
  66.  
  67.  
  68.  
  69. :credits
9  Programación / Scripting / Type hexadecimal para dos en: 15 Junio 2011, 06:09
Código
  1. @echo off
  2. rem dump.bat
  3. setlocal enabledelayedexpansion
  4. set byte=
  5. set offset=
  6. set op1=
  7. set op2=
  8. if %1==/p (set op1=%1
  9. shift)
  10. if %1==/pp (set op2=%1
  11. shift)
  12. if not exist %1 (
  13. set errorlevel=1
  14. echo no se encuentra el archivo %1
  15. goto end
  16. )
  17. (
  18. Echo;E %~z1 "%~s1"
  19. Echo;D 0 %~z1
  20. Echo;Q
  21. )>d
  22. debug %~s1<d>dmp
  23. del d
  24. if not defined op1 if not defined op2 (type dmp
  25. del dmp
  26. goto end)
  27. if not defined op1 goto op2
  28. for /f "tokens=*" %%x in (dmp) do (set unformatted=%%x
  29. set formatted=!unformatted:   = ; !
  30. echo !formatted!>>dig)
  31. for /f "eol=; tokens=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15" %%a in (dig) do (set offset=%%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m %%n
  32. set offset=!offset:;=!
  33. echo !offset:-= !
  34. )
  35. del dmp
  36. del dig
  37. goto end
  38. :op2
  39. for /f "tokens=*" %%x in (dmp) do (set unformatted=%%x
  40. set formatted=!unformatted:   = ; !
  41. echo !formatted!>>dig)
  42. for /f "eol=; tokens=2,3,4,5,6,7,8,9,10,11,12,13,14,15" %%a in (dig) do (set offset=%%a %%b %%c %%d %%e %%f %%g %%h %%i %%j %%k %%l %%m
  43. set offset=!offset:;=!
  44. echo !offset:-= !
  45. )
  46. del dmp
  47. del dig
  48. :end
  49. set byte=
  50. set offset=
10  Programación / Scripting / Batch para saber si un archivo comprimido ya fue extraido dentro de una carpeta en: 15 Junio 2011, 05:58
Puede resultar util si como yo nunca borran los archivos comprimidos luego de extraerlos, a menos que se les llene un disco.

Rardel.bat
Código
  1. if %1==/h goto help
  2. rem rardel a estrenar
  3. del extracted.log>nul
  4. del job>nul
  5. del suspects>nul
  6. setlocal enabledelayedexpansion
  7. dir /b %2*>job
  8. for /f "delims=" %%x in (job) do (set query=%%x
  9. set query=!query:+=!
  10. set query=!query: =*!
  11. dir /b "%~1\*!query!*">suspects
  12. dir /b "%~1\*!query!*"
  13. for /f "delims=" %%y in (suspects) do (echo LC "%1%%y" "%~2%%x"
  14. title Comparando "%1%%y" "%~2%%x"...
  15. call lc "%1%%y" "%~2%%x"))
  16. type extracted.log
  17. goto end
  18. :help
  19. echo Rardel junto con lcrar compara archivos rar y carpetas masivamente
  20. echo Rardel [ruta 1] [ruta 2]
  21. ruta 1  ruta de la carpeta que contiene los archivos rar a comparar
  22. ruta 2 ruta de la carpèta que contiene los archivos con los que se desea comparar
  23. :end
  24.  

Lcrar.bat
Código
  1. @echo off
  2. if %1==h goto help
  3. title Comparando %1 %2...
  4. set registro=%3
  5. if "%3"=="" set registro=extracted.log
  6. SETLOCAL ENABLEDELAYEDEXPANSION
  7. rem a revisar pero aparrentemente funcionando
  8. set interrorlevel=0
  9. set found=
  10. rem extrayendo
  11. if exist "y:\VMemSis\temp\rfc\nowchecking\" rd /s /q "y:\VMemSis\temp\rfc\nowchecking\"
  12. if exist "y:\VMemSis\temp\rfc" rd /s /q "y:\VMemSis\temp\rfc"
  13. md "y:\VMemSis\temp\rfc\muestras\originales"
  14. md "y:\VMemSis\temp\rfc\muestras\copias"
  15. "C:\Archivos de programa\WinRAR\RAR.exe" e -o+ %1 * "y:\VMemSis\temp\rfc\nowchecking\">nul
  16. dir /b /s %2>tubo.rfc
  17. rem creando muestras
  18. rem originales
  19. for %%x in ("y:\VMemSis\temp\rfc\nowchecking\*") do (if exist 32l del 32l
  20. copy "%%x" "%%~nx"32l>nul
  21. echo 32l>>"%%~nx"32l
  22. echo n>c
  23. comp /n=799999999999 "%%x" "%%~nx"32l<c>32l
  24. del "%%~nx"32l
  25. for /f "skip=2 tokens=5" %%y in (32l) do set maxlines=%%y
  26. del 32l
  27. del c
  28. rem corregido revision de tags ID3
  29. rem hay que separar casos
  30. set /a baseline=!maxlines!/2
  31. set /a line1=!baseline!+1
  32. set /a line2=!baseline!+2
  33. set /a line3=!baseline!+3
  34. set /a line4=!baseline!+4
  35. set /a lastline=baseline+5
  36. (findstr /n "." "%%x">"y:\VMemSis\temp\%%~nx"pl
  37. rem encontrar linea y volcar: el destino parece incorrecto a como de lugar
  38. rem la ruta de redireccion debe existir
  39. rem el tamaño del archivo no aumentaba porque el volcado estaba sobreescribiendo
  40. findstr "^^!baseline!: ^^!line1!: ^^!line2!: ^^!line3!: ^^!line4!: ^^!lastline!:"  "y:\VMemSis\temp\% style="color: #448888;">%~nx"pl>>"y:\VMemSis\temp\rfc\muestras\originales\%%~nx.lc"
  41. del "y:\VMemSis\temp\%%~nx"pl
  42. )
  43. )
  44.  
  45. rem copias
  46. for /f "tokens=*" %%x in (tubo.rfc) do (set file=%%x
  47. if exist 32l del 32l
  48. copy "!file!" "!file:~-8,5!"32l>nul
  49. echo 32l>>"!file:~-8,5!"32l
  50. echo n>c
  51. comp /n=799999999999 "!file!" "!file:~-8,5!"32l<c>32l
  52. del "!file:~-8,5!"32l
  53. for /f "skip=2 tokens=5" %%y in (32l) do set maxlines=%%y
  54. del 32l
  55. del c
  56. set /a baseline=!maxlines!/2
  57. set /a line1=!baseline!+1
  58. set /a line2=!baseline!+2
  59. set /a line3=!baseline!+3
  60. set /a line4=!baseline!+4
  61. set /a lastline=!baseline!+5
  62. (findstr /n "." "!file!">"y:\VMemSis\temp\"% style="color: #448888;">%~nx"pl
  63. findstr "^^!baseline!: ^^!line1!: ^^!line2!: ^^!line3!: ^^!line4!: ^^!lastline!:"  "y:\VMemSis\temp\% style="color: #448888;">%~nx"pl>>"y:\VMemSis\temp\rfc\muestras\copias\%%~nx.lc"
  64. del "y:\VMemSis\temp\%%~nx"pl
  65. )
  66. )
  67. rem hasta aqui va bien
  68.  
  69.  
  70. REM COMPARANDO MUESTRAS
  71. for %%x in ("y:\VMemSis\temp\rfc\muestras\originales\*") do (
  72. set /a totalfiles=!totalfiles!+1
  73. set found=-1
  74. for %%y in ("y:\VMemSis\temp\rfc\muestras\copias\*") do if not !found!==1 (fc "%% style="color: #448888;">x" "%%y">nul
  75. if !errorlevel!==1 echo ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²
  76. if !errorlevel!==0 echo ²²²²²²²°°°°°°°°°°°°°°°°°°°°°°°°°°°°²²²²²²²²
  77. if !errorlevel!==0 set /a interrorlevel=!interrorlevel!-1
  78. if !errorlevel!==0 set found=1
  79. if not !errorlevel!==0 set found=0
  80. )
  81. )
  82.  
  83. rd /s /q "y:\VMemSis\temp\rfc"
  84. echo %interrorlevel%/%totalfiles%
  85. set /a rate=%interrorlevel:~1%00/%totalfiles%
  86. echo %rate% %%
  87. rem if %interrorlevel:~1%==%totalfiles%  move %1 %3\%1
  88. if !rate! geq 87 echo %1 %rate% %%>>%registro%
  89. rem casi casi 0k
  90. goto end
  91. :help
  92. echo Lc comparara archivos en el disco duro con sus supuestas imagenes dentro de un archivo rar o zip
  93. echo La sintaxis de lc es la siguiente:
  94. echo Lc [/h] ^<imagen^> ^<carpeta^> ^<archivo de registro^>
  95. echo /h  muestra este texto
  96. echo ^<imagen^>  Ruta completa del archivo rar o zip que se desea comparar
  97. echo ^<carpeta^> Ruta de la carpeta que contiene los archivos con los que se desea comparar
  98. echo ^<archivo de registro^> Archivo que llevara el registro de los archivos comprimidos que coinciden ^(de no especificarse se usara el rachivo por defecto^)
  99. :end

Es un tanto rudo pero funciona bien con menos de 10 archivos si son grandes dependiendo de la cantidad de memoria virtual disponible, lcrar no considera dos archivos iguales (aun). si alguno de los dos o ambos fueron modificados con metadata.

Se que hay metodos mas sofisticados y estoy trabajando en ellos, asi como lograr sortear los tags.
Si alguien considera que se puede mejorar, o sabe de alguna forma de ampliar la memoria virtual puede comentar.
Páginas: [1] 2 3
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines