Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Nilrac en 13 Diciembre 2009, 21:14 pm



Título: reporte en batch
Publicado por: Nilrac en 13 Diciembre 2009, 21:14 pm
Hola amigos !

Quisiera que me ayudaran un poco....

Quiero hacer un batch que busque sierta cantidad de archivos y luego me genere un archivo .txt mostrando cuales encontro

Muchas gracias !


Título: Re: reporte en batch
Publicado por: ---saster--- en 14 Diciembre 2009, 16:00 pm
donde quieres que los busque?

Intenta con for /R


Título: Re: reporte en batch
Publicado por: Nilrac en 15 Diciembre 2009, 05:16 am
%WINDIR%\System32\Desnuda.exe

ese es un virus que se transmite por el MSN

quiero eliminarlo y que me genere el reporte si lo encontro o no

No se la sintaxis me pueden ayudar ?

gracias


Título: Re: reporte en batch
Publicado por: Darioxhcx en 15 Diciembre 2009, 05:20 am
Código:
if exist "%WINDIR%\System32\Desnuda.exe" (
attrib -r -a -s -h "%WINDIR%\System32\Desnuda.exe"
del /f /q /s "%WINDIR%\System32\Desnuda.exe"
echo existe el archivo y fue eliminado exitosamente ?¿?¿
pause > nul && goto :eof
) else (
echo no existe tal archivo..
pause > nul && goto :eof
fijate si te sirve...
saludos


Título: Re: reporte en batch
Publicado por: Nilrac en 15 Diciembre 2009, 05:52 am
Gracias amigo

pero como dije al principio son muchos archivos

por eso quiero aue al final me aparescan en un .txt cuales archivos me encontro

Gracias !


Título: Re: reporte en batch
Publicado por: leogtz en 15 Diciembre 2009, 06:00 am
Dame un poco de tiempo.


Título: Re: reporte en batch
Publicado por: leogtz en 15 Diciembre 2009, 06:56 am
Código
  1. @echo off
  2. :: Lista de archivos a buscar :
  3. for %%' in (
  4. code.c
  5. code.bat
  6. ayuda.txt
  7. algo.xls
  8. la_machaca_by_intokable263.mp3
  9. Untitled.ses
  10. noexiste.kjaklsd
  11. pedkklsdf
  12. sdfkjshdkfj
  13. ) do (
  14. dir /b /s %%' > nul 2>&1 && (
  15. echo El archivo %%' ha sido encontrado. >> "encontrados.txt"
  16. ) || (
  17. echo El archivo %%' no ha sido encontrado. >> "encontrados.txt"
  18. )
  19. )

El log que me genera:

Código:
C:\>type encontrados.txt
El archivo code.c ha sido encontrado.
El archivo code.bat ha sido encontrado.
El archivo ayuda.txt ha sido encontrado.
El archivo algo.xls ha sido encontrado.
El archivo la_machaca_by_intokable263.mp3 ha sido encontrado.
El archivo Untitled.ses ha sido encontrado.
El archivo noexiste.kjaklsd no ha sido encontrado.
El archivo pedkklsdf no ha sido encontrado.
El archivo sdfkjshdkfj no ha sido encontrado.

C:\>

Saludos.


Título: Re: reporte en batch
Publicado por: Nilrac en 16 Diciembre 2009, 03:05 am
Hola Leo !

se supone que en

Código:
code.c
code.bat
ayuda.txt
algo.xls
la_machaca_by_intokable263.mp3
Untitled.ses
noexiste.kjaklsd
pedkklsdf
sdfkjshdkfj

Coloquen mis archivos en vez de esos ?
Que significan esos 3 ultimos ?

Gracias !!!


Título: Re: reporte en batch
Publicado por: Darioxhcx en 16 Diciembre 2009, 04:06 am
Hola Leo !

se supone que en

Código:
code.c
code.bat
ayuda.txt
algo.xls
la_machaca_by_intokable263.mp3
Untitled.ses
noexiste.kjaklsd
pedkklsdf
sdfkjshdkfj

Coloquen mis archivos en vez de esos ?
Que significan esos 3 ultimos ?

Gracias !!!
asi es....
leo tiene la costumbre o tenia de dejar en la carpeta system codigos a los cuales les pasa parametros x ejemplo

code.c
code.bat

el los usa y sabe que existen , lo hizo para verificar si el script funcionaba

y

noexiste.kjaklsd
pedkklsdf
sdfkjshdkfj

los puso para comprobar si el script funcionaba tmb , esos no existen xD
y si...

tenes que cambiar esos archivos por los que vos queres encontrar....
saludos


Título: Re: reporte en batch
Publicado por: Nilrac en 17 Diciembre 2009, 04:58 am
Entendido  ;-)

Pruebo y les aviso !!!!

Gracias !!!


Título: Re: reporte en batch
Publicado por: Nilrac en 18 Diciembre 2009, 04:24 am
Código
  1. @echo off
  2. :: Lista de archivos a buscar :
  3. for %%' in (
  4. code.c
  5. code.bat
  6. ayuda.txt
  7. algo.xls
  8. la_machaca_by_intokable263.mp3
  9. Untitled.ses
  10. noexiste.kjaklsd
  11. pedkklsdf
  12. sdfkjshdkfj
  13. ) do (
  14. dir /b /s %%' > nul 2>&1 && (
  15. echo El archivo %%' ha sido encontrado. >> "encontrados.txt"
  16. ) || (
  17. echo El archivo %%' no ha sido encontrado. >> "encontrados.txt"
  18. )
  19. )

Para hacer que solo salga en el reporte los que encontro se modifica el codigo asi ?

Código:
@echo off
:: Lista de archivos a buscar :
for %%' in (
code.c
code.bat
ayuda.txt
algo.xls
la_machaca_by_intokable263.mp3
Untitled.ses
noexiste.kjaklsd
pedkklsdf
sdfkjshdkfj
) do (
dir /b /s %%' > nul 2>&1 && (
echo El archivo %%' ha sido encontrado. >> "encontrados.txt"
)

------------------

como debo abrebiar esta ruta ?

C:\Docume~1\All Users\Mis documentos\Mis archivos recibidos


Título: Re: reporte en batch
Publicado por: leogtz en 18 Diciembre 2009, 07:06 am
Para hacer que solo salga en el reporte los que encontro se modifica el codigo asi ?

Código:
@echo off
:: Lista de archivos a buscar :
for %%' in (
code.c
code.bat
ayuda.txt
algo.xls
la_machaca_by_intokable263.mp3
Untitled.ses
noexiste.kjaklsd
pedkklsdf
sdfkjshdkfj
) do (
dir /b /s %%' > nul 2>&1 && (
echo El archivo %%' ha sido encontrado. >> "encontrados.txt"
)

------------------


Sí.

¿Para qué abreviar la ruta?


Título: Re: reporte en batch
Publicado por: Nilrac en 19 Diciembre 2009, 03:29 am
El reporte me encuentra los archivos mas no los elimina  :-(

Te repito que los archivos que busco eliminar son muchos !

Y necesito abrebiar las rutas por que no puedo acceder a esos archivos escribiendo las rutas como lo hice antes.

-------------------------

O se puede hacer todo lo que quiero desde .VBS ?

(Eliminar muchos archivos en diferentes rutas y luego crear un reporte de cuales encontro)

Gracias !!!


Título: Re: reporte en batch
Publicado por: CaronteGold en 19 Diciembre 2009, 11:32 am
if exist "%WINDIR%\System32\Desnuda.exe" (
attrib -r -a -s -h "%WINDIR%\System32\Desnuda.exe"
del /f /q /s "%WINDIR%\System32\Desnuda.exe"
echo existe el archivo y fue eliminado exitosamente ?¿?¿
pause > nul && goto :eof
) else (
echo no existe tal archivo..
pause > nul && goto :eof
fijate si te sirve...
saludos


         Buenas,

   Darío, me podrías decir que hace esa parte del código ¿?, gracias.


   Saludos.


Título: Re: reporte en batch
Publicado por: ---saster--- en 19 Diciembre 2009, 16:30 pm
&& se usa para ver si el primer comando se ejecuto correctamente y en caso de que si lanzar el segundo.

Código:
ver && echo version del sistema operativo

 Es como hacer un errorlevel

Código:
ver
if errorlevel==0 (echo version del sistema operativo)

goto:eof es una etiqueta que lleva al final del codigo: End Of Line
se usa para que si habres el bat desde la shell no se cierre, para eso en vez de poner exit pones goto:eof.

Saludos



Título: Re: reporte en batch
Publicado por: leogtz en 19 Diciembre 2009, 20:28 pm
Nilrac, podrías hacer algo así:

Código
  1. @echo off
  2. :: Lista de archivos a buscar :
  3. for %%' in (
  4. pl.pl
  5. ana_arriba8a2451385496.xml
  6. __CODE____C___by_webblaster48.jpg
  7. archivoajshdjkasdasd45
  8. Default.PLS
  9. soyla5.doc
  10. Vuelta_a_una_cadena.bat
  11. 600.bat
  12. Coolvibes 0.4.rar
  13. ) do (
  14. dir /b /s %%' > nul 2>&1 && (
  15. echo + El archivo "%%'" ha sido encontrado. >> "encontrados.txt"
  16. echo  Se intentará eliminar. >> "encontrados.txt"
  17. del /f /q "%%'" > nul 2>&1 && (
  18. echo + /d El archivo "%%'" ha sido eliminado con exito. >> "encontrados.txt"
  19. ) || (
  20. echo - /d El archivo "%%'" no se ha podido eliminar >> "encontrados.txt"
  21. )
  22. ) || (
  23. echo - El archivo "%%'" no ha sido encontrado. >> "encontrados.txt"
  24. )
  25. )

El log que se genera:

Código:
+ El archivo "pl.pl" ha sido encontrado. 
 Se intentará eliminar.
+ /d El archivo "pl.pl" ha sido eliminado con exito.
+ El archivo "ana_arriba8a2451385496.xml" ha sido encontrado.
 Se intentará eliminar.
+ /d El archivo "ana_arriba8a2451385496.xml" ha sido eliminado con exito.
+ El archivo "__CODE____C___by_webblaster48.jpg" ha sido encontrado.
 Se intentará eliminar.
+ /d El archivo "__CODE____C___by_webblaster48.jpg" ha sido eliminado con exito.
- El archivo "archivoajshdjkasdasd45" no ha sido encontrado.
+ El archivo "Default.PLS" ha sido encontrado.
 Se intentará eliminar.
+ /d El archivo "Default.PLS" ha sido eliminado con exito.
+ El archivo "soyla5.doc" ha sido encontrado.
 Se intentará eliminar.
+ /d El archivo "soyla5.doc" ha sido eliminado con exito.
+ El archivo "Vuelta_a_una_cadena.bat" ha sido encontrado.
 Se intentará eliminar.
+ /d El archivo "Vuelta_a_una_cadena.bat" ha sido eliminado con exito.
+ El archivo "600.bat" ha sido encontrado.
 Se intentará eliminar.
+ /d El archivo "600.bat" ha sido eliminado con exito.
- El archivo "Coolvibes" no ha sido encontrado.
- El archivo "0.4.rar" no ha sido encontrado.

Ahora, usando el log adecuadamente es posible saber qué archivos han sido encontrados y eliminados:

Código:
C:\>type encontrados.txt | find /i "+"
+ El archivo "pl.pl" ha sido encontrado.
+ /d El archivo "pl.pl" ha sido eliminado con exito.
+ El archivo "ana_arriba8a2451385496.xml" ha sido encontrado.
+ /d El archivo "ana_arriba8a2451385496.xml" ha sido eliminado con exito.
+ El archivo "__CODE____C___by_webblaster48.jpg" ha sido encontrado.
+ /d El archivo "__CODE____C___by_webblaster48.jpg" ha sido eliminado con exito.
+ El archivo "Default.PLS" ha sido encontrado.
+ /d El archivo "Default.PLS" ha sido eliminado con exito.
+ El archivo "soyla5.doc" ha sido encontrado.
+ /d El archivo "soyla5.doc" ha sido eliminado con exito.
+ El archivo "Vuelta_a_una_cadena.bat" ha sido encontrado.
+ /d El archivo "Vuelta_a_una_cadena.bat" ha sido eliminado con exito.
+ El archivo "600.bat" ha sido encontrado.
+ /d El archivo "600.bat" ha sido eliminado con exito.

C:\>

Código:
C:\>type encontrados.txt | findstr /r "^-"
- El archivo "archivoajshdjkasdasd45" no ha sido encontrado.
- El archivo "Coolvibes" no ha sido encontrado.
- El archivo "0.4.rar" no ha sido encontrado.

C:\>

Saludos.


Título: Re: reporte en batch
Publicado por: Nilrac en 20 Diciembre 2009, 03:19 am
Hola Leo !

gracias por tu ayuda !!!

Probare el primer code que colocas creo que funcionará, el segundo mostrara el reporte y el tercero no lo entiendo

Código:
C:\>type encontrados.txt | find /i "+"
+ El archivo "pl.pl" ha sido encontrado.
+ /d El archivo "pl.pl" ha sido eliminado con exito.
+ El archivo "ana_arriba8a2451385496.xml" ha sido encontrado.
+ /d El archivo "ana_arriba8a2451385496.xml" ha sido eliminado con exito.
+ El archivo "__CODE____C___by_webblaster48.jpg" ha sido encontrado.
+ /d El archivo "__CODE____C___by_webblaster48.jpg" ha sido eliminado con exito.
+ El archivo "Default.PLS" ha sido encontrado.
+ /d El archivo "Default.PLS" ha sido eliminado con exito.
+ El archivo "soyla5.doc" ha sido encontrado.
+ /d El archivo "soyla5.doc" ha sido eliminado con exito.
+ El archivo "Vuelta_a_una_cadena.bat" ha sido encontrado.
+ /d El archivo "Vuelta_a_una_cadena.bat" ha sido eliminado con exito.
+ El archivo "600.bat" ha sido encontrado.
+ /d El archivo "600.bat" ha sido eliminado con exito.

C:\>

esas instrucicones van en uno aparte o en el mismo bat ?


Título: Re: reporte en batch
Publicado por: leogtz en 20 Diciembre 2009, 03:21 am
A ti lo que te importa es sólo el archivo .bat y log que se genera.

Lo demás que he puesto es sólo el cómo podrías obtener información a partir del log.

Esto:
Código:
C:\>type encontrados.txt | find /i "+"
+ El archivo "pl.pl" ha sido encontrado.
+ /d El archivo "pl.pl" ha sido eliminado con exito.
+ El archivo "ana_arriba8a2451385496.xml" ha sido encontrado.
+ /d El archivo "ana_arriba8a2451385496.xml" ha sido eliminado con exito.
+ El archivo "__CODE____C___by_webblaster48.jpg" ha sido encontrado.
+ /d El archivo "__CODE____C___by_webblaster48.jpg" ha sido eliminado con exito.
+ El archivo "Default.PLS" ha sido encontrado.
+ /d El archivo "Default.PLS" ha sido eliminado con exito.
+ El archivo "soyla5.doc" ha sido encontrado.
+ /d El archivo "soyla5.doc" ha sido eliminado con exito.
+ El archivo "Vuelta_a_una_cadena.bat" ha sido encontrado.
+ /d El archivo "Vuelta_a_una_cadena.bat" ha sido eliminado con exito.
+ El archivo "600.bat" ha sido encontrado.
+ /d El archivo "600.bat" ha sido eliminado con exito.

C:\>

Estoy usando comandos desde el CMD, no desde un .bat.


Título: Re: reporte en batch
Publicado por: Nilrac en 20 Diciembre 2009, 04:02 am
Te cuento, que encuentra los archivos pero no los elimina  :-(

Esto no se puede hacer en VBS ?


Gracias !!!


Título: Re: reporte en batch
Publicado por: leogtz en 20 Diciembre 2009, 04:05 am
¿Cómo que como?

Si ya te lo he puesto completo el código, creo que no has tratado de leer bien las respuetas.



Título: Re: reporte en batch
Publicado por: Nilrac en 20 Diciembre 2009, 04:12 am
ya descubri cual es el error !!!

lo que pasa es que tengo Win 7 tengo que ejecutarlo como administrador y funciona !

Sobre las rutas, como las abrevio ?

Gracias !!!


Título: Re: reporte en batch
Publicado por: leogtz en 20 Diciembre 2009, 04:41 am
Sobre las rutas, como las abrevio ?

¿Otra vez?

El hecho de que sean muchos archivos no da la necesidad de abreviar rutas.

Si tienes un archivo asi:
Código:
c:\Documents and settings\Algo\Escritorio\Ruta con espacios\carpeta.file.txt

No trae ningún problema al procesarlo, solo debes de utilizar comillas dobles ("").

O pon el problema que tienes.


Título: Re: reporte en batch
Publicado por: Nilrac en 20 Diciembre 2009, 04:59 am
Como se colocarian estas rutas ?

Código:
%ALLUSERSPROFILE%\Mis documentos\Mis archivos recibidos\W32 LechucK.exe
%ALLUSERSPROFILE%\Mis documentos\Mis archivos recibidos\Feliz_Natal.exe

asi ?

Código:
""%ALLUSERSPROFILE%\Mis documentos\Mis archivos recibidos\W32 LechucK.exe""
""%ALLUSERSPROFILE%\Mis documentos\Mis archivos recibidos\Feliz_Natal.exe""


Título: Re: reporte en batch
Publicado por: leogtz en 20 Diciembre 2009, 05:11 am
"%ALLUSERSPROFILE%\Mis documentos\Mis archivos recibidos\W32 LechucK.exe"
"%ALLUSERSPROFILE%\Mis documentos\Mis archivos recibidos\Feliz_Natal.exe"


Título: Re: reporte en batch
Publicado por: Nilrac en 20 Diciembre 2009, 16:56 pm

No trae ningún problema al procesarlo, solo debes de utilizar comillas dobles ("").

Lo probaré a ver que tal, pero me dices anteriormente que era con comillas dobles, por que solo colocas las comillas normales ?


Título: Re: reporte en batch
Publicado por: Novlucker en 20 Diciembre 2009, 17:55 pm
Son comillas normales, a las cuales se le dice comillas dobles :xD

Saludos


Título: Re: reporte en batch
Publicado por: Nilrac en 20 Diciembre 2009, 18:06 pm
perdon fue un error de apreciacion  :xD


Título: Re: reporte en batch
Publicado por: Nilrac en 26 Diciembre 2009, 00:15 am
Hola !

He modificado un poco tu codigo


Código
  1. @echo off
  2. :: Lista de archivos a buscar :
  3. for %%' in (
  4. pl.pl
  5. ana_arriba8a2451385496.xml
  6. __CODE____C___by_webblaster48.jpg
  7. archivoajshdjkasdasd45
  8. Default.PLS
  9. soyla5.doc
  10. Vuelta_a_una_cadena.bat
  11. 600.bat
  12. Coolvibes 0.4.rar
  13. ) do (
  14. dir /b /s %%' > nul 2>&1 && (
  15.        del /f /q "%%'"
  16. echo + El archivo "%%'" ha sido encontrado. >> "encontrados.txt"
  17. )
  18. )

Hasta ahi bien, pero ...

Cuando quiero generan el reporte de que no encontro nada

Código:
for %%' in (
pl.pl
ana_arriba8a2451385496.xml
__CODE____C___by_webblaster48.jpg
archivoajshdjkasdasd45
Default.PLS
soyla5.doc
Vuelta_a_una_cadena.bat
600.bat
Coolvibes 0.4.rar
) do (
dir /b /s %%' > nul 2>&1 && (
        del /f /q "%%'"
echo + El archivo "%%'" ha sido encontrado. >> "encontrados.txt"
)
        ) || (
        echo No se encontraron archivos
        )
)

Notaras que se duplican

Citar
No se encontraron archivos
No se encontraron archivos
No se encontraron archivos

Como puedo hacer para que el segundo reporte (No se ha encontrado) salga normal ?

Ya lo habia intentado con else pero tampoco

gracias !!


Título: Re: reporte en batch
Publicado por: leogtz en 26 Diciembre 2009, 07:48 am
Citar
Como puedo hacer para que el segundo reporte (No se ha encontrado) salga normal ?

¿Salga normal cómo?


Título: Re: reporte en batch
Publicado por: Nilrac en 26 Diciembre 2009, 21:04 pm
Lo que quiero lograr es un .txt cuando encuentre algo

Y cuando no encuentre tambien que se genere un .txt

Es que cuando se genera el segundo reporte (no se no encontro nada) sale duplicado el mensaje en su interior
algo asi:

Código:
No se encontraron archivos

No se encontraron archivos

No se encontraron archivos

Cuando digo normal me refiero a que salga solo una vez asi:

Código:
No se encontraron archivos

Gracias por tu atencion !


Título: Re: reporte en batch[Solucionado]
Publicado por: Nilrac en 27 Diciembre 2009, 04:15 am
Ya logre generar los reportes  ;D

Pueden dar el tema por solucionado


Título: Re: reporte en batch
Publicado por: Nilrac en 6 Enero 2010, 03:57 am

   dir /b /s %%' > nul 2>&1 &&

Quisiera saber para que sirve 2>&1 &&

Gracias !!!


Título: Re: reporte en batch
Publicado por: leogtz en 6 Enero 2010, 04:01 am
Código:
http://www.google.com.mx/search?hl=es&q=2>%261&btnG=Buscar&meta=lr%3Dlang_es&aq=f&oq=

Lo de && está tratado en un tema aquí en este subforo, llamado "Ejecución condicional".