Показать полную графическую версию : [решено] Удаление строк в текстовом файле, как это сделать???
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
}
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. Запускайте
Uragan66
06-09-2020, 22:07
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, но немного оптимизированный.
Вот только не пойму, почему пропускается последняя строка (Бюджетирование (основатель):) в обоих вариантах этого кода...
По сути тот же код, что и у ув. DJ Mogarych »
И ваш код, и от DJ Mogarych не будет искать последнюю строку, так как скобки в регэкспе требуют экранирования.
Uragan66
06-09-2020, 22:15
Fors1k, ясно... спасибо за подсказку, как-то упустил из виду!
ну нужно всего-то экранировать скобки в файле St.txt
но ваш код работает отлично, правда, не знаю как будет с большим к-вом файлов, не пробовал.
В смысле, скобки в строке Бюджетирование мешают? Вы правы оба кода работают но есть один небольшой нюанс должно быть 19 строк не зависимо есть эта строка в обрабатываемом файле или нет просто эти данные будут заполнены позже. А так все ок.
должно быть 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
}
Благодарю, все работает отлично.
Не пойму в чем проблема, скрипт удаляет Сокращенное название: я как-то не обратил изначально на это внимание так как не у всех файлах данные пункт был заполнен
megaloman
08-09-2020, 13:12
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 Бюджетирование (основатель): и все выборки делал бы по цифровому коду - меньше вероятность орфографических несовпадений
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.