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

Компьютерный форум 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

 

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


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

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


dir "G:\Box_In*.txt" -Recurse |% {
$data = gc "$($_.fullname)" -encoding utf8 |Select-String `
"Код ЕГРПОУ:",
"Полное название:",
"Сокращенное название:",
"Тип ЗОСО:",
"Ступень:",
"Форма собственности:",
"Тип местности:",
"Индекс:",
"Почтовый адрес:",
"Код КОАТУУ:",
"Телефоны:",
"E-mail:",
"Директор:",
"Куратор ЗОСО:",
"Уполномоченное лицо:",
"Количество учащихся:",
"Количество персонала:",
"Количество классов:",
"Бюджетирование (основатель):"

$data |Set-Content "$($_.fullname)" -Encoding utf8

}
param(
$model = "G:\Files\St.txt",
$folder = "G:\Box_In"
)cls

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

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



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

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


Аватара для Fors1k

Старожил


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

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


Jeka124, Вы 2 разных кода записали в один скрипт???
Еще раз:
1.Запустите powershell ise
2.Скопируйте и вставьте туда этот код (в окошко, где слева идет нумерация строк):
Код: Выделить весь код
param(
    $model  = "G:\Files\St.txt",
    $folder = "G:\Box_In"
)cls

foreach($i in (gci $folder *.txt).FullName){
    $(foreach($j in (gc $model -enc UTF8)){
        gc $i -enc UTF8|? {$_ -like "$j*"}
    })|out-file $i
}
3. Проверьте правильность пути
4. Запускайте

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

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

Отправлено: 22:06, 06-09-2020 | #62


Старожил


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

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


Jeka124, а зачем вы слепили два разных кода в один скрипт ?

Вот ещё такой вариант можете попробовать:
Код: Выделить весь код
$folder = 'G:\Box_In'
$blank = 'G:\Files\St.txt'

Get-ChildItem $folder -filter *.txt -Recurse | ForEach {
$str = Get-Content "$($_.fullname)" -Encoding utf8 `
 | Select-String (Get-Content $blank -Encoding utf8 | ForEach {$_})

$str | Set-Content "$($_.fullname)" -Encoding utf8

}
По сути тот же код, что и у ув. DJ Mogarych, но немного оптимизированный.
Вот только не пойму, почему пропускается последняя строка (Бюджетирование (основатель):) в обоих вариантах этого кода...

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


Аватара для Fors1k

Старожил


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

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


Цитата Uragan66:
По сути тот же код, что и у ув. DJ Mogarych »
И ваш код, и от DJ Mogarych не будет искать последнюю строку, так как скобки в регэкспе требуют экранирования.
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:09, 06-09-2020 | #64


Старожил


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

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


Fors1k, ясно... спасибо за подсказку, как-то упустил из виду!
ну нужно всего-то экранировать скобки в файле St.txt

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

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


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


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

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


В смысле, скобки в строке Бюджетирование мешают? Вы правы оба кода работают но есть один небольшой нюанс должно быть 19 строк не зависимо есть эта строка в обрабатываемом файле или нет просто эти данные будут заполнены позже. А так все ок.

Отправлено: 22:24, 06-09-2020 | #66


Аватара для Fors1k

Старожил


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

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


Цитата Jeka124:
должно быть 19 строк не зависимо есть эта строка в обрабатываемом файле или нет »
Код: Выделить весь код
param(
    $model  = "G:\Files\St.txt",
    $folder = "G:\Box_In"
)cls

foreach($i in (gci $folder *.txt)){
    $data = gc $model -raw -en UTF8 
    $text = gc $i.FullName -en UTF8
    foreach($j in (gc $model -en UTF8)){
        $text|?{$_  -like "$j*"}|%{
        $data=$data.replace($j,$_)}  
    }
    $data|out-file $i.FullName
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:53, 06-09-2020 | #67


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


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

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


Благодарю, все работает отлично.

Отправлено: 00:08, 07-09-2020 | #68


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


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

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


Не пойму в чем проблема, скрипт удаляет Сокращенное название: я как-то не обратил изначально на это внимание так как не у всех файлах данные пункт был заполнен

Последний раз редактировалось Jeka124, 08-09-2020 в 12:19.


Отправлено: 12:11, 08-09-2020 | #69


Ветеран


Contributor


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

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


Jeka124, Это Ваши проблемы:
в файле "Столбцы.txt" у Вас "Сокращенное название:"
в файле "11493.txt" "Сокращенное:"
Естественно по такой ключевой фразе поиск не состоится.

Вообще-то я бы изменил методику кодировки отчетов, например, первые 3 позиции отвёл бы для цифрового кода, например:
Код: Выделить весь код
010 Код ЕГРПОУ:
020 Полное название:
030 Сокращенное название:
040 Тип ЗОСО:
050 Ступень:
060 Форма собственности:
070 Тип местности:
080 Индекс:
090 Почтовый адрес:
100 Код КОАТУУ:
110 Телефоны:
120 E-mail:
130 Директор:
140 Куратор ЗОСО:
150 Уполномоченное лицо:
160 Количество учащихся:
170 Количество персонала:
180 Количество классов:
190 Бюджетирование (основатель):
и все выборки делал бы по цифровому коду - меньше вероятность орфографических несовпадений

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

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

Отправлено: 13:12, 08-09-2020 | #70



Компьютерный форум 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




 
Переход