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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


  Mostrar Mensajes
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11
41  Programación / Scripting / Re: Ayuda. Renombrar un archivo con el contenido de otro. en: 9 Noviembre 2009, 15:30 pm
Qué raro! Intenta cambiando el comando TYPE por SORT < "Archivo2.txt". Debería quedarte así:

Código:
For /f "useback tokens=*" %%R in ('sort < "Archivo2.txt"') do (ren "Archivo1.txt" "%%R.txt")

Pruébalo así a ver. Sino funciona dime y luego pruebo en la computadora. Ahorita te estoy respondiendo desde el celular.
42  Programación / Scripting / Re: Ayuda. Renombrar un archivo con el contenido de otro. en: 9 Noviembre 2009, 14:50 pm
Una pregunta: tu "archivo2.txt" tiene cuantas líneas? Solo contiene el texto que quieres usar para renombrar el "archivo1.txt", o tiene algo más?
Si tiene una sola se podría hacer como propusiste, pero usando un FOR. Fíjate:

Código:
For /f "useback tokens=*" %%R in ('type "Archivo2.txt"') do (ren "Archivo1.txt" "%%R")

Eso funcionaría en caso de que el texto en "Archivo2.txt" ya tenga un nombre válido de archivo con extensión y todo. Si no es así, tendrías que adjuntar la extensión tú:
Código:
ren "Archivo1.txt" "%%R.txt"

Ahora bien, debes saber que si "Archivo2.txt" tiene más de una línea de texto el nombre final del "Archivo1.txt" será el de la última línea. Por eso te hacía la pregunta. Ve si te sirve eso.
43  Programación / Scripting / Re: COmo podria'??....... [batch] en: 9 Noviembre 2009, 03:34 am
Listo. Después de varias pruebas, este es el que mejor me corrió, aunque debo mencionar que no es 100% efectivo. Una que otra vez pasa por alto algún borrado, pero creo que es inevitable, pues se toma ciertos segundos para verificar, y en eso si casualmente se borra un archivo, puede que no lo registre.
De todos modos quedó bueno.

Lo primero que hace es pedir que se configure la ruta a chequear, la cual queda guardada en Settings.ini, en la misma carpeta, lo que impide que se vuelva a configurar en próximas ejecuciones. En caso de querer cambiarla posteriormente se puede borrar el archivo o modificar la ruta en el mismo (CheckPath).

A partir de entonces el programa queda verificando el contenido de la ruta, y guarda el registro del mismo en Content.log, también en la misma carpeta. Esta solo se actualiza cuando se borra o agrega un archivo en la ruta chequeada. Ahora bien, el programa guarda otro registro en la carpeta %temp% que si se actualiza todo el tiempo. Esa fue la única forma en que logré que la verifiación fuese más efectiva.

Por último, el programa va mostrando en pantalla cada archivo que se borra y a su vez lo guarda un registro llamado DelReg.log, que almacena la fecha y la hora del borrado, junto al nombre del archivo.

Aquí se los dejo. Lo llamé Delete Checker v1.0:

Código
  1. @echo off
  2. cls
  3. title Delete Checker [v1.0] By ^<N0ZI3(FB^>
  4. echo. & echo  Iniciando... & sleep 1
  5. If not exist "%~dp0Settings.ini" (call:Define) else (call:Read)
  6. cls
  7. call:CheckMsj
  8. dir /a /b /s "%checkPath%" >"%~dp0Content.log"
  9. call:List
  10.  
  11. :List
  12. set match=0
  13. For /f "useback tokens=*" %%R in ("%~dp0Content.log") do (
  14.     set "regValue=%%R"
  15.     If not exist "%%R" call:DelMsj
  16. )
  17. If %match% == 1 (
  18.     call:CheckMsj
  19.     set match=0
  20.     dir /a /b /s "%checkPath%" >"%~dp0Content.log"
  21. )
  22. dir /a /b /s "%checkPath%" >"%temp%\Content.log"
  23. call:Compare
  24. goto List
  25.  
  26. :Compare
  27. fc /c "%temp%\Content.log" "%~dp0Content.log" >nul
  28. If %errorlevel% == 0 (goto:eof) else (move /y "%temp%\Content.log" "%~dp0Content.log" >nul)
  29. goto:eof
  30.  
  31. :CheckMsj
  32. echo. & echo  Chequeando (%checkPath%)... & echo.
  33. goto:eof
  34.  
  35. :DelMsj
  36. If "%time:~0,1%" == " " (set "hora=0%time:~1%") else (set "hora=%time%")
  37. echo   ELIMINADO (%hora%): %regValue%
  38. (echo ELIMINADO ^(%date% %hora%^): %regValue%)>>"%~dp0DelReg.log"
  39. set match=1
  40. goto:eof
  41.  
  42. :Read
  43. For /f "useback tokens=*" %%R in ("%~dp0Settings.ini") do (set "settValue=%%R")
  44. set "checkPath=%settValue:~10%"
  45. If not exist "%checkPath%" (
  46.     echo. & echo La ruta pre-configurada ya no existe.
  47.     call:Define m
  48. )
  49. goto:eof
  50.  
  51. :Define
  52. set sender=%1
  53. If not defined sender echo. & echo  Debe configurar el sistema en su primer uso. & echo.
  54. set /p _Path=Indique el disco o directorio a procesar:
  55. If not exist %_Path% call:Define r
  56. For %%s in (%_Path%) do (
  57.     set "checkPath=%%~dpns"
  58. )
  59. (echo CheckPath=%checkPath%)>"%~dp0Settings.ini"
  60. goto:eof
  61.  

Espero saber si te resulta útil Crisis, y a cualquiera que lo use.
44  Programación / Scripting / Re: COmo podria'??....... [batch] en: 8 Noviembre 2009, 21:36 pm
Que tal Crisis! Aprovecho que te veo conectado para decirte que sí hay una forma de hacer lo que pides. Hace unos días leí tu pregunta y me dediqué a hallar la manera. Ya logré algo, pero hay unos detalles que estoy terminando. Si te quedas un rato tal vez lo veas; estoy por terminarlo. Espera...
45  Programación / Scripting / Re: problemas en batch en: 7 Noviembre 2009, 03:50 am
Ok Leo! Gracias por la sugerencia. Solo lo hago en sentancias simples que  forman parte de una misma función (echo. & echo). Lo tendré en cuenta de todos modos.  :laugh:
46  Programación / Scripting / Re: ¿Cómo obtengo el nombre del grupo de trabajo en BATCH? en: 7 Noviembre 2009, 03:36 am
Gracias por su interés compañeros, pero nada me ha servido. Pensé que con el WMIC lo obtendría pues tiene muchas opciones, pero ninguna me da la opción de WORKGROUP.
El %USERDOMAIN% me devuelve el nombre de la PC, así que tampoco funcionó.
Es raro que eso sea tan difícil de conseguir.

¿Alguna otra sugerencia?
47  Programación / Scripting / Re: problemas en batch en: 5 Noviembre 2009, 20:14 pm
Código:
@echo off
:Main
echo. & set /p choice=¨Eres tonto (S/N)?:
If not defined choice goto Main
If /i "%choice%" neq "s" If /i "%choice%" neq "n" goto Main
If /i "%choice%" == "n" echo. & echo ­FELICIDADES! ­Ud no es UN TONTO!
If /i "%choice%" == "s" echo. & echo ­QUE HORROR! Ya me lo imaginaba.
pause>nul
cls & goto Main

Prueba ese! Jeje!  ;D
48  Programación / Scripting / ¿Cómo obtengo el nombre del grupo de trabajo en BATCH? (SOLUCIONADO) en: 5 Noviembre 2009, 19:52 pm
Hola compañeros del foro! Necesito una manita.
Parece algo sencillo, pero por más que busco no encuentro la respuesta. Por eso decidí apelar a vuestra sabiduría nuevamente!  ;D

Se trata de mostrar el nombre del grupo de trabajo de mi red local. El comando NET VIEW me lista los equipos de la misma, pero no el nombre.

¿Existe algún comando para mostrarla por ms-dos? De verdad me hace falta. Gracias.

49  Programación / Scripting / Re: ubicar linea en txt conociendo palabra [batch] en: 21 Octubre 2009, 21:47 pm
Qué bueno que te sirviera! Puedo decirte que lo que sé de Batch lo he aprendido solo aquí en el foro y en tan solo unos meses gracias a la ayuda de los compañeros y moderadores que de verdad están dispuestos a ayudar. De modo que me uno a ti en el agradecimiento.

Lo de tus preguntas es muy sencillo.

En primer lugar:
Código:
set "line=%%F"

Si te fijas bien, lo que hago en esta línea es crear la variable line con el valor de la variable del FOR (%%F), pues esta última se encarga de extraer el texto de cada línea del archivo que indicaste. Por eso le di el nombre "line" (línea) a esa variable.
Código:
For /f "useback tokens=*" %%F in ("%file%") do (
...
set "line=%%F"
...
)

Tu segunda duda:
Código:
"!string:~%nchar%,1!"

Bueno, esta línea la uso en la etiqueta :Contar para saber cuántos caracteres (nchar) tiene la palabra que indicaste (string) para buscar en el archivo de texto (file). Si te fijas, esta etiqueta lo que hace es ir sumando nchar hasta que llega al último caracter. Déjame darte algunos ejemplos:

Si tengo la variable "VAR=Hola mundo" y quiero mostrar su valor, solo debo usar un echo:
Código:
echo Valor de VAR: "%VAR%"
Se mostraría esto:
Código:
Valor de VAR: "Hola mundo"

Ahora, si no quiero ver todo su contenido sino una fracción, por ejemplo, los primeros tres caracteres, haría lo siguiente:
Código:
echo Valor fraccionado de VAR: "%VAR:~0,3%"
El primer número indica la posición (0) y el segundo (3) los caracteres que se mostrarán desde esa posición. Así pues, el resultado de esto sería:
Código:
Valor fraccionado de VAR: "Hol"

Bueno, no sé si ya conocías ese detalle, pero por si acaso lo expliqué.

Ahora bien, debes haber notado que en mi código original hay algunas diferencias, particularmente respecto a los dos signos de admiración (!) que usé. Esto se debe a que necesitaba usar una variable para determinar la posición, en vez de indicarla directamente con un número. No funcionaría de hacerlo de este modo:
Código:
%string:~%nchar%,1%
Ahora bien, debo mencionar que para que puedan usarse estos signos (!) en vez de los porcentajes (%) hay que escribir la línea:
Código:
setlocal enabledelayedexpansion
que si ves, usé al principio antes de llamar a la etiqueta :Contar. Eso lo aprendí hace poco, aunque debo confesar que no entiendo bien por qué es necesario. He leído que tiene que ver con unas tales variables retardadas, pero hasta ahí.

Creo que esto abarca lo de tus dudas, y tal vez más... Jaja! Espero que por lo menos hayas quedado claro.
50  Programación / Scripting / Re: ubicar linea en txt conociendo palabra [batch] en: 20 Octubre 2009, 23:30 pm
Buenas... Sé que hay muchas maneras sencillas de hacer lo que piden, pero aquí te dejo un .bat que te servirá para eso. Espero les sea útil.

Código
  1. @echo off
  2. :Main
  3. cls
  4. set /p file=Indique el nombre del archivo:
  5. set /p string=Indique la palabra a buscar:
  6. setlocal enabledelayedexpansion
  7. set /a nchar=0
  8. call:Contar
  9. set /a nlin=0
  10. For /f "useback tokens=*" %%F in ("%file%") do (
  11.     set /a nlin+=1
  12.     set "line=%%F"
  13.     set /a xcont=0
  14.     call:Comparar
  15. )
  16. echo. & echo Terminado. & pause>nul & goto Main
  17.  
  18. :Contar
  19. If /i "!string:~% style="color: #448888;">nchar%,1!" == "" goto:eof
  20. set /a nchar+=1
  21. goto Contar
  22.  
  23. :Comparar
  24. If /i "!line:~% style="color: #448888;">xcont%,%nchar%!" == "% style="color: #448888;">string%" (
  25.     set mtch=T
  26.     call:Msj
  27. )
  28. If /i "!line:~% style="color: #448888;">xcont%,%nchar%!" == "" (
  29.     set mtch=F
  30.     call:Msj
  31.     goto:eof
  32. )
  33. set /a xcont+=1
  34. goto Comparar
  35.  
  36. :Msj
  37. If "%mtch%" == "T" (
  38.     echo PALABRA ENCONTRADA: [LINEA %nlin%] %line% & echo.
  39.     call:Choice
  40. )
  41. If "%mtch%" == "F" echo LINEA %nlin%: %line%
  42. goto:eof
  43.  
  44. :Choice
  45. set /p ch=¨Continuar la b£squeda (S/N)?:
  46. If not defined ch goto Choice
  47. If /i %ch% == s goto:eof
  48. If /i %ch% == n goto Main
  49. goto:eof
  50.  
Páginas: 1 2 3 4 [5] 6 7 8 9 10 11
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines