Как удалить файлы из папки, используя список имен файлов в Windows?


23

у меня есть папка с 2K + файлами в ней, мне нужно удалить около 200, у меня есть текстовый файл со всеми именами файлов, которые мне нужно удалить, упорядоченные в списке, как мне удалить определенные файлы из папки, используя список? (ОС Windows 7)

Ответы:


18

Простой способ - скопировать TXT-файл в файл, mydel.batуказанный в каталоге файлов для удаления. С помощью редактора, такого как Microsoft Word, отредактируйте этот файл. Сделайте глобальную замену на Newline обычно ^pв Word. Замените это на space/f^pdelspace. Это изменится

File1.bin
File20.bin
File21.bin

to (с помощью /f«принудительно удалять файлы только для чтения»):

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

Отредактируйте первую строку, чтобы добавить delпробел и удалить последнюю строку.

Запустите пакетную команду.


Помимо переключателя / Y, который, по-видимому, не работает в команде win7 del, он работал довольно хорошо .. спасибо
Avishking

2
Это, вероятно, должно быть /fдля «принудительного удаления файлов только для чтения» вместо /y.
afrazier

Правильный афразир. Я перепутал / Y, который работает с XCOPY и одной или двумя другими программами DOS, чтобы «Подавить запрос подтверждения действия»
kingchris

В редакторах, которые знают, как найти / заменить с помощью регулярных выражений, таких как Notepad ++, вам нужно заменить «^» на «del», а «$» на «/ f», где ^ представляет начало каждой строки, а $ - конец.
Дэн Миреску

38

Введите это в командной строке, заменив файл на files_to_delete.txt:

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

Эта версия подходит для включения в .cmdфайлы (double %%) и может обрабатывать пробелы в именах файлов:

for /f "delims=" %%f in (files_to_delete.txt) do del "%%f"

1
Это фактически удалило список файлов вместо самих файлов ... мне пришлось создать список снова: |
Авишкинг,

4
Мои самые глубокие извинения. Я забыл /fфлаг.
Уильям Джексон

Это довольно изящно, я не знал, что командная строка поддерживает такие циклы. Хотите написать сообщение для блога SU об этой и других тонкостях командной строки?
Иво Флипс

1
@Ivo: Вы можете посмотреть на computerhope.com/batch.htm или superuser.com/questions/tagged/batch, чтобы узнать больше. Как и в Unix, многое из того, что можно сделать в сценариях (пакетных файлах), также можно выполнить непосредственно из командной строки.
BlueRaja - Дэнни Пфлюгофт

Я создал файл bat и скопировал 2-й пример: result: files_to_delete.txt все еще удален. (даже с флагом / f)
bvdb

18

Использование PowerShell:

Get-Content c:\path\to\list.txt | Remove-Item

1
Ничего себе, это более читабельно, чем пакет.
TheLQ

Для будущих читателей ... Мне пришлось сменить оператора трубы на a, >чтобы сделать эту работу. Get-Content c:\path\to\list.txt > Remove-ItemТо есть ... у меня были полные пути UNC в моем list.txt. Надеюсь это поможет.
NateJ

@NateJ Я попытался использовать, >и он просто создал файл для меня, вместо того, чтобы удалять вещи.
Брайан Джей

@BrianJ Хм, я должен проверить, что я сделал .. хороший улов.
NateJ

1

Я полагаю, что это можно сделать с PowerShell.

Зная Perl , я склонен использовать его для такого рода вещей

perl -l -n -e "unlink" filenames.txt

1

Первый метод работает после некоторых изменений:

  1. открыть блокнот
  2. скопировать все имена файлов с расширением, которые необходимо удалить после добавления delв начале, как

    del File1.bin
    del File20.bin
    del File21.bin
    
  3. сохранить файл как xyz.batв той же папке

  4. запустить файл

2
... текстовый файл в вопросе содержит около 200 имен файлов. Зачем добавлять delвручную, как вы предлагаете, в то время как решения уже были опубликованы для его автоматизации? Кроме того: любой здравомыслящий редактор будет иметь некоторую поддержку для поиска и замены, включая окончания строк (или начало строк, используя регулярные выражения), макросы или редактирование в режиме блоков или столбцов (часто инициируется удержанием Option или Alt и последующим выбором блок, после которого можно просто набрать несколько строк одновременно).
Арджан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.