Test Foro de elhacker.net SMF 2.1

Programación => Scripting => Mensaje iniciado por: analca3 en 23 Octubre 2009, 19:02 PM

Título: Batch para buscar y borrar un archivo
Publicado por: analca3 en 23 Octubre 2009, 19:02 PM
Hola. Me gustaria saber como hacer un bat/vbs que me busque y borre un archivo determinado... Es que esto de la programacion ahora mismo me supera xDD...

Muchas gracias.

Salu2!!!
Título: Re: Batch para buscar y borrar un archivo
Publicado por: leogtz en 23 Octubre 2009, 20:07 PM
¿Qué archivo?.

Algo así debería funcionar:

@echo off
cd /d "%homedrive%\"
for /f "tokens=*" %%_ in ('dir /b /s "archivo.txt"') do (
del /f /q "%%_"
)

El archivo a eliminar sería "archivo.txt", eso debes cambiar.
Título: Re: Batch para buscar y borrar un archivo
Publicado por: analca3 en 24 Octubre 2009, 12:32 PM
Hola. Gracias por tu respuesta tan rapida. Pero tengo una duda, ya que no me ha funcionado :(. Tu pones una variable (por asi llamarlo) llamada %homedrive... ¿Puede ser que solo incluya 1 HDD, el principal? Es que he probado poniendo el archivo en C: y lo borra, pero en D: no. ¿Que habria que cambiar? La verdad es que lo que has escrito, entiendo poco xDD...

Muchas gracias.

PD: ¿Se puede poner para que no salga la ventana de CMD? Aunque esto es menos importante, si me resuelven la duda estaria muy agradecido ;).

Salu2!!!
Título: Re: Batch para buscar y borrar un archivo
Publicado por: leogtz en 25 Octubre 2009, 02:22 AM
El código sólo es válido para el disco duro donde esté tu sistema operativo, comunmente en C:.

Para conocer las variables de entorno del CMD, teclea el comando "SET".

Luego te ayudo con lo demás.
Título: Re: Batch para buscar y borrar un archivo
Publicado por: analca3 en 25 Octubre 2009, 13:14 PM
Gracias. He metido ese comando en la CMD, lo que pasa que no hay ninguna para todas las unidades... He buscado en google, y veo que puedo crear mas, pero entonces, supongo yo que no iria en otros PC's... Entonces me surge una idea: Y si en vez de poner una variable, pongo por ejemplo C: D: H: L:... ¿servirira? ¿pasaria algo si esa unidad no existiera en un PC?

Muchas gracias, me estas siendo de mucha ayuda, y siento el toston que te estare dando xD...

Salu2!!!
Título: Re: Batch para buscar y borrar un archivo
Publicado por: analca3 en 1 Noviembre 2009, 15:21 PM
Hola. He probado poner C:\ D:\ H:\ en vez de %Homedrive%\, pero no va... me dice que la sintaxis no es correcta... ¿Que puedo hacer?

PD: Siento mucho el doble post :(.

Salu2!!!
Título: Re: Batch para buscar y borrar un archivo
Publicado por: leogtz en 1 Noviembre 2009, 19:36 PM
Cita de: analca3 en  1 Noviembre 2009, 15:21 PM
Hola. He probado poner C:\ D:\ H:\ en vez de %Homedrive%\, pero no va... me dice que la sintaxis no es correcta... ¿Que puedo hacer?

PD: Siento mucho el doble post :(.

Salu2!!!

Necesito ver tu código.
Título: Re: Batch para buscar y borrar un archivo
Publicado por: analca3 en 2 Noviembre 2009, 01:16 AM
@echo off
cd /d "C:\ D:\ H:\"
for /f "tokens=*" %%_ in ('dir /b /s "archivo.txt"') do (
del /f /q "%%_"
)

pause


El pause lo tengo para conseguir leer lo que pone xDD... Gracias!

Salu2!!!
Título: Re: Batch para buscar y borrar un archivo
Publicado por: leogtz en 2 Noviembre 2009, 20:33 PM
Claro que la línea con el CD está mal, no puedes entrar en dos directorios distintos a la misma vez.

El siguiente código encuentra las unidades de disco disponibles en el sistema, en seguida busca el archivo a eliminar, en este caso yo lo llamé "archivoloco.txt" sólo para ilustrar.

El archivo lo tengo en las siguientes rutas :

C:\>code
C:\Documents and Settings\Administrador\Escritorio\archivoloco.txt
C:\Documents and Settings\Administrador\Escritorio\Escuela\archivoloco.txt
D:\RECOVERY\archivoloco.txt
F:\problemas\archivoloco.txt
G:\psico\archivoloco.txt

C:\>


Se trata de eliminarlo.

Código (dos) [Seleccionar]
@echo off
rem Leo Gutierrez R.
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
dir /b %%i:\ > nul 2>&1 && (
for /f "tokens=*" %%_ in ('dir /b /s %%i:archivoloco.txt') do (
del /f /q "%%_"
)
)
)
pause>nul
exit /b 0


Y eso fue todo, si volviera a buscar los archivos en los distintos discos, esto obtendría:

C:\>lala
No se encuentra el archivo
No se encuentra el archivo
No se encuentra el archivo
No se encuentra el archivo

C:\>


Saludos.
Título: Re: Batch para buscar y borrar un archivo
Publicado por: analca3 en 2 Noviembre 2009, 21:03 PM
Gracias!!! Acabo de probarlo, y el resultado mejora, aunque se queda pillado... le he puesto echo on para ver lo que hace, y borre muchas de las letras (que supongo que serian las unidades) porque crei que se colgaba al buscar en la unidad DVD xD:


C:\Windows\system32>rem Leo Gutierrez R.

C:\Windows\system32>for %i in (c d) do (dir /b %i:\   1>nul 2>&1  && (for /F "to
kens=*" %_ in ('dir /b /s %i:archivo.txt') do (del /f /q "%_" ) ) )

C:\Windows\system32>(dir /b c:\   1>nul 2>&1  && (for /F "tokens=*" %_ in ('dir
/b /s c:archivo.txt') do (del /f /q "%_" ) ) )
No se encuentra el archivo

C:\Windows\system32>(dir /b d:\   1>nul 2>&1  && (for /F "tokens=*" %_ in ('dir
/b /s d:archivo.txt') do (del /f /q "%_" ) ) )
No se encuentra el archivo

C:\Windows\system32>pause1>nul


Y ahi se queda... Si yo supiera programar... xDD... pero bueno, ese momento tendra que esperar (a mi pesar, si por mi fuera...)...

Muchas gracias, Leo.

Salu2!!!
Título: Re: Batch para buscar y borrar un archivo
Publicado por: leogtz en 2 Noviembre 2009, 21:05 PM
Ha sido mi error, quitale el "pause>nul", de ahí que se quede "pillado".
Título: Re: Batch para buscar y borrar un archivo
Publicado por: analca3 en 2 Noviembre 2009, 21:08 PM
Bien, ahora no se queda pillado. Lo que pasa que ahora no me borra los archivos que tengo en C:, solo los que tengo en D:... lo veo raro, porque en el script estan puestos c y d...

Muchas gracias por tu ayuda.

Salu2!!!
Título: Re: Batch para buscar y borrar un archivo
Publicado por: leogtz en 2 Noviembre 2009, 21:14 PM
No, no, yo te dejé el código funcionando, si lo modificaste es responsabilidad tuya.
Título: Re: Batch para buscar y borrar un archivo
Publicado por: analca3 en 2 Noviembre 2009, 21:16 PM
@echo off
rem Leo Gutierrez R.
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
dir /b %%i:\ > nul 2>&1 && (
for /f "tokens=*" %%_ in ('dir /b /s %%i:archivoloco.txt') do (
del /f /q "%%_"
)
)
)

exit /b 0


Ahora mismo lo tengo asi...

PD: Por favor, no te desquicies de mi, no tengo culpa de no saber programar...

Salu2!!!
Título: Re: Batch para buscar y borrar un archivo
Publicado por: leogtz en 2 Noviembre 2009, 21:20 PM
El código final es este, no hace falta añadir o quitar nada, el mismo seleccionará las unidades disponibles y hará el trabajo. Si no te borra los archivos es porque no están.
@echo off
rem Leo Gutierrez R.
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
dir /b %%i:\ > nul 2>&1 && (
for /f "tokens=*" %%_ in ('dir /b /s %%i:archivoloco.txt') do (
del /f /q "%%_"
)
)
)
exit /b 0
Título: Re: Batch para buscar y borrar un archivo
Publicado por: analca3 en 2 Noviembre 2009, 21:28 PM
(http://img405.imageshack.us/img405/4766/capturaprueba.th.png) (http://img405.imageshack.us/i/capturaprueba.png/)

Muchas gracias por tu tiempo, que no es poco xD...

Salu2!!!
Título: Re: Batch para buscar y borrar un archivo
Publicado por: Angel Doze en 3 Noviembre 2009, 10:01 AM
Hola analca3,

Me parece que estaba haciendo falta la diagonal, y por ende no encontraba ni el disco, ni el archivo, esto te servira, le agregue una condicional para que el resultado te lo mande a un archivo de txt:


Citar@echo off
rem Leo Gutierrez R.
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
   dir /b %%i:\ > nul 2>&1 && (
   for /f "tokens=*" %%_ in ('dir /b /s %%i:\archivoloco.txt 2^>^&1^|FIND /I "."') do (
      del /f /q "%%_" && echo.Se encontro y elimino : %%~_ >> DelDat.txt
   )
   )
) >NUL 2>&1
pause
exit /b 0

Si no te arroja ningun  "txt". es por que no existe dicho archivo loco.

Salu2!
Título: Re: Batch para buscar y borrar un archivo
Publicado por: analca3 en 3 Noviembre 2009, 14:59 PM
Hola Angel Doze. Este me funciona a la perfeccion, incluso suelta el archivito... Y encima tarda poquisimo!!! Muchas gracias a los 2!!!

PD: Se puede agregar algo al script para que no salga la ventana de CMD? Muchisimas gracias.

Salu2!!!
Título: Re: Batch para buscar y borrar un archivo
Publicado por: leogtz en 3 Noviembre 2009, 16:49 PM
No creo que hiciese falta, porque la salida que me daba esto:

C:\>code
C:\Documents and Settings\Administrador\Escritorio\archivoloco.txt
C:\Documents and Settings\Administrador\Escritorio\Escuela\archivoloco.txt
D:\RECOVERY\archivoloco.txt
F:\problemas\archivoloco.txt
G:\psico\archivoloco.txt

C:\>


Era este:
@echo off
rem Leo Gutierrez R.
for %%i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
dir /b %%i:\ > nul 2>&1 && (
for /f "tokens=*" %%_ in ('dir /b /s %%i:archivoloco.txt') do (
echo "%%_"
)
)
)

exit /b 0


Evidentemente los archivos no estaban.

Cita de: analca3 en  3 Noviembre 2009, 14:59 PM

PD: Se puede agregar algo al script para que no salga la ventana de CMD? Muchisimas gracias.


Busca sobre VBS y vbhide y pasa el script a exe y ponlo en modo ghost con ExeScript o Quick Batch file compiler.