Войти

Показать полную графическую версию : Поиск и удаление строки в такестовых файлах одного каталога


DmAv2k9
06-09-2013, 11:17
Доброго времени суток.
Прошу прощения за ламерскую просьбу в помощи решения следующей задачи.
Есть каталог в котором лежит n-ое количество текстовых файлов.
Стоит задача искать в этих файлах строки, содержащие определенную комбинацию символов и удалять эти строки, при этом имена файлов обязательно должны сохраняться.

Как сделать для одного файла нашел:
type file.txt | findstr /i /v "strtofind" > temp.txt
del file.txt
rename temp.txt file.txt

а вот как это все сделать с несколькими файлами - увы, слабо.

Заранее спасибо.

Anonymоus
06-09-2013, 12:14
а вот как это все сделать с несколькими файлами - увы, слабо »
DmAv2k9, получить все текстовые файлы из директории и вложенных директорий можно с помощью команды Dir. В вашем случае, она должна выглядеть примерно так:
Dir "C:\Path\to\dir\*.txt" /A:-D /B /S
А обработать полученные строки можно в цикле For с ключом /F, использовав там приведённые вами команды. Для справки посмотрите Dir /? и For /?

DmAv2k9
06-09-2013, 17:55
Извиняюсь за нубство, но, видно, это не в моих силах осилить данную задачу.
Как я понял мне надо сделать что-то наподобие:


@echo off
set papka=D:\torg\*.txt
For /F %%I In ('Dir "%papka%" /A:-D /B /S') Do
(findstr /i /v "strtofind" > temp.txt
del %%I.txt
rename temp.txt %%I.txt)


Но, как конкретно, это реализовать, увы я не знаю.
Пожалуйста, поправьте мой кривой код, чтобы заработало. Как вариант, можно файлы после удаления в них искомых строк переносить в другой каталог, может так будет проще. Главное чтобы сохранялись имена файлов.

Anonymоus
06-09-2013, 18:24
Но, как конкретно, это реализовать, увы я не знаю. »
Примерно как-то так:
@Echo Off
SetLocal EnableDelayedExpansion

Set StringToDelete=strtofind

For /F "delims=" %%A In ('Dir ".\*.txt" /A:-D /B /S') Do (
FindStr /P /I /V /C:"%StringToDelete%" "%%~A">"%Temp%\%%~nxA"
Del "%%A" && Move "%Temp%\%%~nxA" "%%~dpA">nul
)
Pause&Exit
Если какой-то участок кода вам покажется непонятным - спрашивайте, постараюсь объяснить.

DmAv2k9
06-09-2013, 19:02
Огромное спасибо. Все работает чётко.
Единственный вопрос-пожелание, если не затруднит, поменять код так, чтобы батник обрабатывал ту папку, где он лежит, что бы отойти от


Set WorkDir=D:\torg

Anonymоus
06-09-2013, 20:09
DmAv2k9, исправил предыдущее сообщение, теперь рабочая папка - та, из которой запущен батник, как вы и просили.

paflik@vk
18-09-2013, 01:05
Не поможете с запросом?) Вот этот бы скрипт немного перепилить, чтобы он брал искомые выражения из файла 123.txt




© OSzone.net 2001-2012