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

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

Ответить
Настройки темы
CMD/BAT - [решено] Удаление строк в текстовом файле, как это сделать???

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


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

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


Лежит папка а в ней все отчёты в текстовом виде, так вот надо удалить со всех текстовых документах строки где есть слова "mozila" как это сделать? Нашёл вот это
HTML код: Выделить весь код
type your_file.txt | findstr /v firefox.exe > temp.txt del your_file.txt rename temp.txt your_file.txt

но он не удаляет ((((

Отправлено: 19:39, 19-09-2009

 

Ветеран


Contributor


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

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


Цитата Jeka124:
Есть пару тысяч txt файлов »
Если в одной папке, то
Код: Выделить весь код
@Echo Off
	Set "BoxIn=Z:\Box_In"
	Set "Mask=*.txt"
	Set "KeyWord=mozila"

	Pushd "%BoxIn%" && FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%Mask%" /B /A:-D`) DO (
		>"%%f.tmp" (FOR /F "usebackq delims=" %%t IN (`2^>nul More "%%f"^|FindStr /I /V "%KeyWord%"`) DO Echo %%t)
		>nul Move /Y "%%f.tmp" "%%f"
	)
	Popd
Exit /B
Если в разных, без просмотра подпапок, то:
Код: Выделить весь код
@Echo Off
	Set BoxIn="Z:\Box_In" "Z:\Soft_In"
	Set "Mask=*.txt"
	Set "KeyWord=mozila"

	For %%d In (%BoxIn%) Do (
		Pushd "%%~d" && FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%Mask%" /B /A:-D`) DO (
			>"%%f.tmp" (FOR /F "usebackq delims=" %%t IN (`2^>nul More "%%f"^|FindStr /I /V "%KeyWord%"`) DO Echo %%t)
			>nul Move /Y "%%f.tmp" "%%f"
		)
		Popd
	)
Exit /B

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 06-09-2020 в 15:23.


Отправлено: 15:07, 06-09-2020 | #41



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

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


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


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

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


Все файлы в одной папке. Что-то не работает. Первая строка это путь к папке с файлами? В третью строку я вписывают ключевой слово? Если в файле мне нужно оставить не одну строку а несколько, повторить третью строку с другим ключевым словом? Это через бат файл? Сорян возможно задаю тупые вопросы - новичок.

Текст в файлах на русском языке, возможно это имеет значение или должно срабатывать в любом случае?

Отправлено: 16:39, 06-09-2020 | #42


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


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

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


Вложения
Тип файла: txt 1.txt
(339 байт, 4 просмотров)

Ок,

Отправлено: 17:01, 06-09-2020 | #43


Ветеран


Contributor


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

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


Начнём сначала:
Цитата Jeka124:
type your_file.txt | findstr /i /v "mozila" > temp.txt
del your_file.txt
rename temp.txt your_file.txt »
Цитата Jeka124:
Если в файле мне нужно оставить не одну строку а несколько, повторить третью строку с другим ключевым словом? Это через бат файл? »
1.findstr /i /v "mozila" позволяет выдать все строки, которые не содержат , условно, слово mozila. Объясните, что Вы хотите: оставить все строки со словом, условно, mozila, либо удалить эти строки.
2. В какой кодировке сохранены текстовые файлы? Неплохо бы получить образец файла. Так как Вы хотите работать с кириллицей, кодировка важна.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

Отправлено: 17:13, 06-09-2020 | #44


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


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

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


Вложения
Тип файла: txt Столбцы.txt
(551 байт, 14 просмотров)
Тип файла: txt 11493.txt
(2.2 Kb, 12 просмотров)

Суть в том, что нужно собрать некоторые данные о школах есть файлы с данными но там много лишнего и это нужно убрать. В файле столбцы это те строки которые должны остаться в конечном итоге, второй файл образец. Работаю через Notepad++ и там кодировку можно изменить, вот только не знаю во всех одновременно можно это сделать.

Отправлено: 17:26, 06-09-2020 | #45


Ветеран


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

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


Цитата Jeka124:
Если в файле мне нужно оставить не одну строку а несколько, повторить третью строку с другим ключевым словом? »
Нет. Вам нужно было бы повторить параметр «/c» и, если именно «оставить» — то убрать параметр «/v»:
Код: Выделить весь код
… findstr.exe /i /c:"мама" /c:"мыла" /c:"раму"
Цитата Jeka124:
Текст в файлах на русском языке, возможно это имеет значение или должно срабатывать в любом случае? »
Имеет значение кодировка данных файлов. У Вас она — UTF8/65001 без BOM, посему быстрее, проще и надёжнее в данном случае будет пользовать PowerShell.
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:45, 06-09-2020 | #46


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


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

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


А как это реализовать через PowerShell?

Отправлено: 18:04, 06-09-2020 | #47


Аватара для Fors1k

Старожил


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

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


Цитата Jeka124:
А как это реализовать через PowerShell? »
Код: Выделить весь код
param(
    $model  = "C:\Files\Столбцы.txt",
    $folder = "C:\Box_In"
)cls

foreach($i in (gci $folder *.txt).FullName){
    foreach($j in (gc $model -en UTF8)){
        gc $i -enc UTF8|? {$_ -like "$j*"}
    }
}

Последний раз редактировалось Fors1k, 06-09-2020 в 21:45.

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

Отправлено: 18:05, 06-09-2020 | #48


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


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

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


Что-то не работает. Первая строка это путь к образу? Вторая путь к файлам? Если так то не работает, все файлы остались без изменений. Возможно я что-то не так делаю. В общем скопировал код создал файл вставил код, сохранил поменял расширение на ps1, открыл windows powerhell ise от имени админа нажал выполнить, какие-то действия были выполнены но вот результата нет, возможно результат не сохраняется?

Отправлено: 18:27, 06-09-2020 | #49


Ветеран


Contributor


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

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


Вложения
Тип файла: txt я20090617utf.bat.txt
(364 байт, 1 просмотров)

Если в пути папки, заданном в батнике, нет кириллических символов, если сохранять батник в UTF8 без BOM, то можно выкрутиться. В приложенном батнике, переименованном в txt, удаляются строки с двумя (можно больше) фразами.
Код: Выделить весь код
@Echo Off
	Set "BoxIn=Z:\Box_In"
	Set "Mask=*.txt"
	Set KeyWord="Ступень" "Бюджетирование (основатель)"

	Pushd "%BoxIn%" && FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%Mask%" /B /A:-D`) DO (
		FOR  %%k IN (%KeyWord%) DO (
			>"%%f.tmp" (More "%%f"|Find /I /V %%k)
			>nul Move /Y "%%f.tmp" "%%f"
		)
	)
	Popd
Exit /B
FindStr не работает с UTF и за раз исключить строки с несколькими словами не получается, поэтому применяется Find последовательно для каждой из исключаемых фраз.
Можно, наверное, сделать выборку строк с ключевыми фразами, но это несколько иная песТня.
Надеюсь, спецы по PowerShell напишут приемлемое для ваших тысяч файлов

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 06-09-2020 в 18:57.

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

Отправлено: 18:46, 06-09-2020 | #50



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Найти и заменить в текстовом файле. Как? Pozia AutoIt 15 11-03-2010 19:12
подсчёт слов в текстовом файле bakatum Хочу все знать 4 22-01-2010 21:10
CMD/BAT - [решено] Отделить последние цифры из строчки в текстовом файле ZeroCrash Скриптовые языки администрирования Windows 4 29-06-2009 16:03
[решено] Как удалить строки в текстовом файле при отсутсвии файла в опрелеленном месте? Pozia AutoIt 23 14-05-2009 21:41
Как оставить в файле Х первых строк? Dan Вебмастеру 10 19-10-2002 00:41




 
Переход