2009-07-24 3 views
1

У меня есть длинный список имен файлов в текстовый файл, который я создал с помощьюПакетное удаление файлов из файла На Cmd Line

findstr /M "string here" *.* > c:\files.log 

Файл составляет около 3 МБ. Теперь я хочу удалить все эти файлы. Я попробовал del < c: \ files.log, но это не работает. Что я должен использовать?

+1

, вероятно, принадлежит ServerFault или SuperUser –

+2

Пакетное программирование - это программирование, не так ли? –

ответ

3

Batch для NT на вверх поддерживает цикл со специальными переключателями

FOR/F, кажется, соответствует то, что вы хотите, как это позволяет вводить данные из файла и позиционных разделителей.

См .. http://ss64.com/nt/for_f.html

Вы ищете что-то вроде ...

для/F "токенов = *" %% а в (files.log) DO УДАЛИТЬ "%% A"

+0

Для бонусных очков OP может транслировать свой вход findstr в FOR. –

+0

Абсолютно .... Однако сегментирование файлов в файлы позволяет вам проверять/отлаживать пакетные файлы. – CMB

+0

Роб: Вы не можете вникать. Вы должны использовать 'for/f% x in ('some command')'. Но вы не можете подключиться к нему :) – Joey

0

При установке Cygwin или что-то подобное, это просто:

cat files.log | xargs rm 
1

Это должно работать:

for /f "tokens=1*" %a in (filelist.txt) do del %a 
+0

Также «delims =» имеет только конечный конец в качестве разделителя для длинных имен файлов. – Jay

0

Вы должны быть %% а и не% в внутри пакетного файла % а для ЦМД