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!!!
¿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.
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!!!
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.
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!!!
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!!!
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.
@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!!!
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.
@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.
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!!!
Ha sido mi error, quitale el "pause>nul", de ahí que se quede "pillado".
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!!!
No, no, yo te dejé el código funcionando, si lo modificaste es responsabilidad tuya.
@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!!!
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
(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!!!
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!
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!!!
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.