¿Cómo eliminar archivos de una carpeta usando una lista de nombres de archivos en Windows?

23

Tengo una carpeta con 2K + archivos, necesito eliminar alrededor de 200, tengo un archivo txt con todos los nombres de archivos que necesito eliminar ordenados en una lista, ¿cómo elimino los archivos específicos de la carpeta usando la lista? (El sistema operativo es Windows 7)

Avishking
fuente

Respuestas:

18

Una forma simple es copiar el archivo txt a un archivo llamado mydel.baten el directorio de los archivos a eliminar. Usando un editor como Microsoft Word edite este archivo. Haga un reemplazo global en Newline normalmente ^pen Word. Reemplácelo con space/f^pdelspace. Esto va a cambiar

File1.bin
File20.bin
File21.bin

a (con /f"forzar eliminación de archivos de solo lectura"):

File1.bin /f
del File20.bin /f
del File21.bin /f
del

Edite la primera línea para agregar el delespacio y elimine la última línea.

Ejecute el comando por lotes.

Kingchris
fuente
Aparte del
modificador
2
Probablemente se trate /fde "forzar la eliminación de archivos de solo lectura" en lugar de /y.
Afrazier
Corrija el afrazier. Estaba mezclando el / Y que funciona con XCOPY y uno o dos programas de DOS más para 'Suprimir las indicaciones para confirmar la acción'
kingchris
En los editores que saben cómo buscar / reemplazar con expresiones regulares, como Notepad ++, deberá reemplazar "^" con "del" y "$" con "/ f", donde ^ representa el comienzo de cada fila y $ - el fin.
Dan Mirescu
38

Escriba esto en la línea de comando, sustituyendo su archivo por files_to_delete.txt:

for /f %i in (files_to_delete.txt) do del %i

Una versión de esto adecuada para incluir en .cmdarchivos (doble %%) y capaz de tratar con espacios en los nombres de archivo:

for /f "delims=" %%f in (files_to_delete.txt) do del "%%f"
William Jackson
fuente
1
Esto realmente eliminó la lista de archivos en lugar de los archivos en sí ... tuve que crear la lista nuevamente: |
Avishking
44
Mis más sinceras disculpas. Olvidé la /fbandera.
William Jackson el
Eso es bastante ingenioso, no sabía que la línea de comandos admitía bucles como ese. ¿Le gustaría escribir una publicación de blog para el blog SU sobre esta y otras complejidades de la línea de comando?
Ivo Flipse
1
@Ivo: es posible que desee consultar computerhope.com/batch.htm o superuser.com/questions/tagged/batch para obtener más información. Al igual que Unix, gran parte de lo que se puede hacer en scripts (archivos por lotes) también se puede hacer directamente desde la línea de comandos.
BlueRaja - Danny Pflughoeft
Creé un archivo bat y copié el segundo ejemplo: resultado: los archivos_de_delete.txt todavía se eliminan. (incluso con la bandera / f)
bvdb
18

Usando PowerShell:

Get-Content c:\path\to\list.txt | Remove-Item
Siim K
fuente
1
Wow, eso es mucho más legible que el lote.
TheLQ
Para futuros lectores ... Tuve que cambiar el operador de tubería a a >para que esto funcione. Es decir Get-Content c:\path\to\list.txt > Remove-Item... Tenía caminos completos de UNC en mi list.txt. Espero que esto ayude.
NateJ
@NateJ Intenté usar el >y solo creó un archivo para mí, en lugar de eliminar cosas.
Brian J
@BrianJ hmm, tendré que volver a comprobar lo que hice ... buena captura.
NateJ
1

Me imagino que se puede hacer con powershell.

Conociendo a Perl , tiendo a usarlo para este tipo de cosas

perl -l -n -e "unlink" filenames.txt
RedGrittyBrick
fuente
1

El primer método funciona después de algunos cambios:

  1. abrir Bloc de notas
  2. Copie todos los nombres de archivo con extensión que deben eliminarse después de agregar delal principio como

    del File1.bin
    del File20.bin
    del File21.bin
    
  3. guardar el archivo como xyz.baten la misma carpeta

  4. ejecuta el archivo
Hassan
fuente
2
... el archivo de texto en la pregunta tiene alrededor de 200 nombres de archivo. ¿Por qué agregar delmanualmente como está proponiendo, mientras que las soluciones ya se publicaron para automatizarlo? Por otro lado: cualquier editor en su sano juicio tendría algún soporte para buscar y reemplazar, incluyendo finales de línea (o comienzos de línea, usando expresiones regulares), macros o para la edición de modo de bloque o columna (a menudo iniciada manteniendo presionada la tecla Opción o Alt y luego seleccionando un bloque, después de lo cual se puede escribir en varias líneas a la vez).
Arjan