Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск и удаление строки в такестовых файлах одного каталога

Ответить
Настройки темы
CMD/BAT - Поиск и удаление строки в такестовых файлах одного каталога

Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

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

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

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

Отправлено: 11:17, 06-09-2013

 

Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


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

Отправлено: 12:14, 06-09-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Код: Выделить весь код
@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)
Но, как конкретно, это реализовать, увы я не знаю.
Пожалуйста, поправьте мой кривой код, чтобы заработало. Как вариант, можно файлы после удаления в них искомых строк переносить в другой каталог, может так будет проще. Главное чтобы сохранялись имена файлов.

Отправлено: 17:55, 06-09-2013 | #3


Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


Цитата DmAv2k9:
Но, как конкретно, это реализовать, увы я не знаю. »
Примерно как-то так:
Код: Выделить весь код
@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
Если какой-то участок кода вам покажется непонятным - спрашивайте, постараюсь объяснить.

Последний раз редактировалось Anonymоus, 06-09-2013 в 20:09.

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:24, 06-09-2013 | #4


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Код: Выделить весь код
Set WorkDir=D:\torg

Отправлено: 19:02, 06-09-2013 | #5


Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


DmAv2k9, исправил предыдущее сообщение, теперь рабочая папка - та, из которой запущен батник, как вы и просили.
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:09, 06-09-2013 | #6


Новый участник


Сообщения: 1
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Не поможете с запросом?) Вот этот бы скрипт немного перепилить, чтобы он брал искомые выражения из файла 123.txt

Отправлено: 01:05, 18-09-2013 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск и удаление строки в такестовых файлах одного каталога

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Поиск строки по слову и добавление новой строки после найденой. Mikhael2011 Скриптовые языки администрирования Windows 17 16-03-2017 03:37
VBS/WSH/JS - [решено] Поиск строки по маске в txt файле и замена всей строки из InputBox ultrarare Скриптовые языки администрирования Windows 11 03-07-2013 14:37
CMD/BAT - [решено] Поиск и удаление строк, содержащих перевод строки после двоеточия SergeyVD Скриптовые языки администрирования Windows 3 14-03-2012 22:36
CMD/BAT - Поиск слова в тексте, удаление строки, удаление 8 строк выше и 3 строк ниже Alk-13 Скриптовые языки администрирования Windows 0 10-02-2012 18:06
CMD/BAT - [решено] Поиск и удаление строки в файле по сложным условиям m0nkrus Скриптовые языки администрирования Windows 9 26-06-2011 10:37




 
Переход