
Quiero eliminar varios subdirectorios del mismo directorio. Los directorios tienen "tmp" como los primeros tres caracteres de su nombre. Esto no está funcionando:
C:\Documents and Settings\rajesh\Local Settings\Temp> rmdir tmp*
Respuesta1
El rmdir
comando no acepta comodines. Puedes usar un pequeño for
bucle para lograr el mismo objetivo. Esto ejecutará el rmdir
comando varias veces, una para cada archivo/carpeta que coincida con el patrón dado:
for /D %f in (tmp*) do rmdir "%f"
- Tenga en cuenta que si las carpetas no están vacías y desea que se repitan en ellas, deberá agregarlas
/S
al final. - Si desea evitar la verificación de confirmación, agregue
/Q
también. - Si desea evitar que imprima el comando para cada línea, agréguelo
@
antes del comando. - Las comillas alrededor de %f permitirán eliminar carpetas con espacios.
Por ejemplo, con todas estas opciones, tendrías:
for /D %f in (tmp*) do @rmdir "%f" /Q /S
Para ver el uso completo, escriba rmdir /?
.
Respuesta2
Una buena forma general y segura es crear un archivo con los directorios que desea eliminar. dir /ad > blah
Luego verifique que el archivo tenga lo que desea y luego cree un comando for que repita cada línea del archivo. for /f %a in (blah) do @echo %a
luego modifíquelo para los comandos que desee, por ejemplo, esta línea coloca rmdir al principio de cada línea del archivo for /f %a in (blah) do @echo rmdir %a
o al final para agregar /q /s al rmdir %a que ya está ahí, es decir, use @echo rmdir %a /q. /s. Y luego, una vez que esté bien con los comandos que se ejecutarían, elimine la parte del eco para quefor /f %a in (blah) do @rmdir %a /q /s
otra forma es también utilizar ese método inicial de hacer que el archivo enumere los subdirectorios a eliminar. De modo que cada línea del archivo se puede modificar para leer el comando para eliminar ese subdirectorio. Luego use sed en el archivo para reemplazar el subdirectorio x con rmdir x /q /s.
Entonces, si tienes el archivo llamado blah. sed "s/.*/rmdir \0 \/q\/s/" blah >f
type f
mira que tiene todos los comandos. para eliminar cada subdirectorio. Si está satisfecho con él y desea ejecutarlo, puede cambiar el nombre de f a f.bat y ejecutarlo.