Necesito eliminar todos los archivos .jpg y .txt (por ejemplo) en dir1 y dir2.
Lo que probé fue:
@echo off
FOR %%p IN (C:\testFolder D:\testFolder) DO FOR %%t IN (*.jpg *.txt) DO del /s %%p\%%t
En algunos directorios funcionó; en otros no lo hizo.
Por ejemplo, esto no hizo nada:
@echo off
FOR %%p IN (C:\Users\vexe\Pictures\sample) DO FOR %%t IN (*.jpg) DO del /s %%p\%%t
¿Qué me estoy perdiendo en el segundo fragmento? ¿Por qué no funcionó?
batch-file
cmd
vexe
fuente
fuente
Respuestas:
Puede utilizar comodines con el
del
comando y/S
hacerlo de forma recursiva.del /S *.jpg
Apéndice
@BmyGuest preguntó por qué una respuesta con voto negativo (
del /s c:\*.blaawbg
) era diferente a mi respuesta.Hay una gran diferencia entre correr
del /S *.jpg
ydel /S C:\*.jpg
. El primer comando se ejecuta desde la ubicación actual , mientras que el segundo se ejecuta en todo el disco .En el caso de que elimine
jpg
archivos con el segundo comando, es posible que algunas aplicaciones dejen de funcionar y termine perdiendo todas sus fotos familiares. Esto es absolutamente molesto, pero su computadora aún podrá funcionar.Sin embargo, si está trabajando en algún proyecto y desea eliminar todos sus
dll
archivosmyProject\dll
, ejecute el siguiente archivo por lotes:Luego terminas eliminando todos los
dll
archivos de tuC:\
disco. Todas sus aplicaciones dejan de funcionar, su computadora se vuelve inútil y, en el próximo reinicio, es teletransportado a la cuarta dimensión donde estará atrapado por la eternidad.La lección aquí es no ejecutar dicho comando directamente en la raíz de una unidad (o en cualquier otra ubicación que pueda ser peligrosa, como
%windir%
) si puede evitarlo. Ejecútelos siempre lo más localmente posible.fuente
pause
al final permitirá al usuario ver la información completa del registro.cd
ydel
con `& 'consulte stackoverflow.com/q/8055371/7429464del
comando, sin tener que cambiar el directorio actual.Escribí un script por lotes hace un tiempo que le permite elegir una extensión de archivo para eliminar. El script buscará en la carpeta en la que está y en todas las subcarpetas cualquier archivo con esa extensión y lo eliminará.
Espero que esto sea útil para cualquiera que lo desee :)
fuente
find . -name "*.ext" -type f -delete
(donde ext es su extensión elegida) será suficiente.Puede usar esto para eliminar TODOS los archivos dentro de una carpeta y subcarpetas:
O use esto para eliminar solo ciertos tipos de archivos:
fuente
No tengo suficiente reputación para agregar comentarios, así que publiqué esto como respuesta. Pero para el problema original con este comando:
El primer For carece de sintaxis recursiva, debería ser:
Puedes simplemente hacer:
para mostrar la salida real.
fuente
eso es todo:
pd: reemplace folder_path con su carpeta
fuente
Si está intentando eliminar ciertas extensiones en la unidad C: use este cmd:
Tenía un cliente que tenía un virus de cifrado y necesitaba encontrar todos los archivos basura y eliminarlos.
fuente
del /s c:\*.dll
, entonces está preparado para una muy mala sorpresa. Nunca ejecute dichos comandos en todo el disco, a menos que sea absolutamente necesario.c:
debe reemplazarse por la carpeta deseada si la persona no quiere el disco completo.