Batch para buscar y borrar un archivo

Iniciado por analca3, 23 Octubre 2009, 19:02 PM

0 Miembros y 1 Visitante están viendo este tema.

analca3

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!!!

leogtz

¿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.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

analca3

#2
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!!!

leogtz

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.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

analca3

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!!!

analca3

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!!!

leogtz

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.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

analca3

@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!!!

leogtz

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.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

analca3

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!!!