Как удалить строку в текстовом файле
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
этот код удаляет если батник и файл лежат в одном каталоге, а как сделать, чтобы можно было удалить эту строчку со всех файлов с именем your_file.txt лежащих в этом каталоге и подкаталогов. Например со всего диска d?
Конфигурация компьютера | |
Процессор: Intel Core 2 Quad Q9300, 2500 MHz (7,5 x 333) | |
Материнская плата: Asus P5Q PRO | |
Память: Transcend 2048x2 4096 Мб (DDR2-1066 DDR2 SDRAM) | |
HDD: Seagate ST3250410AS (250 Гб, 7200 RPM, SATA-II) + STM31000528AS (1 Тб, 7200 RPM, SATA-II) | |
Видеокарта: Asus EAH3650 (RV635) | |
Звук: Realtek ALC1200 (встроенный) | |
Блок питания: ExeGate 350W | |
CD/DVD: Optiarc DVD RW AD-7170S | |
Монитор: Samsung SyncMaster 971P 19'' | |
ОС: Windows 7 Ultimate SP1 (x64) | |
Индекс производительности Windows: 5,9 |
Здравствуйте, помогите пожалуйста решить задачу
Есть текстовый файл содержащий большое количество строк
нужно удалить строки содержащие определенные слова
пробовал это:
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
set src=1.txt
set dest=1_1.txt
set seek=нужные слова
2>nul del "%dest%"
find /i "%seek%" < "%src%" >"%src%_"
exit /B
и вот это:
@echo off
type 1.txt | find /v /i "Ненужное слово" > file.temp
echo.Y | move file.temp 2.txt
строки удаляются корректно, но:
есть символ в виде квадрата, в начале каждой строки, как я понял это символ переноса строки,
при использовании доступных на этом форуме советов по автоудалению строк,
конечный файл получается без этих самых "квадратиков", хотя строки удаляются корректно
Запись из TextBox в .txt файл в определенную строку
Подскажите пожалуйста: Имеется Text box, как сделать так чтобы после ввода в него текста и нажатию.
Необходимо в текстовом файле найти определенную строку, в которой имеется спец.символ и удалить строку
К примеру в файле есть записи: Привет Привет Хороший День Мне нужно, что бы запись с символом.
Как удалить определённую строку в файле?
Дан файл, в нём содержится текст.Удалить определённую строку. Удаление происходит через запрос.
Надо вначале построчно считать файл куда нибудь, например в массив строк. Потом переписать старый фал уже из этого массива, но без нежелательной строки.
Примерно можно так написать:
Я обычно пользуюсь несколько иной формой
Добавлено через 1 минуту
Добавлено через 4 минуты
Но у Pro_grammer'а код более безопасен, у меня используется оператор килл, если кто захочет использовать мой вариант пусть будет внимателен.
Добавлено через 31 секунду
Homarty, Спасибо большое) Подставила, подскажите, как прописать количество строк (For i= To) , чтобы не само забивало цифрами файл (например, до 100), а оставило пустые строки (ограничивалось уже существующими строками в файле)
Pro_grammer
А зачем считывать файл в массив строк?
Не будет ли проще сразу переписать файл, пропустив
при этом одну или несколько ненужных строк.
Не совсем понятно что требуется, в примере программера в загрузке формы
автоматически заполняется файл числами, это место можно закоментировать
И почему никого не волнует абсолютный путь
ну нету у меня диска C:, нужно грамотно писать пути
В примере я кое что поправил
Добавлено через 2 минуты
Должно получиться следущее:
Добавлено через 1 минуту
Добавлено через 3 минуты
В процедуре CallingForTest() нужно указать полное имя файла и номер строки, которую нужно удалить, и запустить ее.
С помощью временного файла - неинтересно. С помощью полной загрузки в память - неинтересно. Как сделать без дополнительных файлов и без полной загрузки в память? А ведь можно:
- читаем на двоичном доступе блоки файла один за другим в буфер
- в процессе чтения ловим появление кодов chr$(13) - т.е. считаем строки
- когда подведена нужная строка, определяем ее длину и отнимаем от исходной длины файла длину удаляемой строки
- читаем данные после удаленной строки и записываем в этот же файл, начиная с места удаления.
А теперь самое интересное!
- файл закрываем и снова открываем с помощью winAPI-функции CreateFile; сохраняем хэндл открытого файла
- с помощью winAPI-функции SetFilePointer устанавливаем файловый указатель на позицию в файле, равную новой длине
- с помощью winAPI-функции SetEndOfFile делаем это место концом файла (усекаем файл)
- с помощью winAPI-функции CloseHandle закрываем файл
Вот теперь - все. Строка удалена из файла без лишней памяти и файлов. Код ниже:
fever brain, спасибо большое
только у меня файл на входе
1
2
3
4
5
.
и т. д., цифры и дальше будут прибавляться
Подскажите, пожалуйста, как это прописать здесь:
поэтому я спрашивала ранее, как прописать, количество строк, не указывая четко до какой, потому что они будут прибавляться постоянно .
UBound это размер массива
Print добавит строку в конец файла
EOF определяет дошла ли считываемая строка до конца файла
есть еще
LOF - размер, Seek - позиция и тд, сейчас мне некогда, у меня утро
опять вы пишете C: в имени файла, поймите не у всех есть этот диск, у меня Z:\
и чо я буду переделывать код чтобы проверить как все работает, я уже писал как это грамотно сделать
скомпелированную программу уже не переделаешь..
у вас в программе уже есть это
ChDir Environ("systemdrive") - и то можно не писать программа и так будет искать корень диска если C: не указывать
тоесть корневая папка системного диска, дальше если использовать имена путей
то можно писать \TIME . или \Windows или \Program Files
Добавлено через 11 минут
Если ктото чтото гдето написал, это не значит что надо тупо списывать и использовать
даже Catstail не рассмотрел элементарные ошибки кода
Здравствуйте, меня интересует такой вопрос - как удалить определённую строку из файла, если я знаю
её номер ?
Удаление и редактирование определённой строки
Задание- словарь синонимов, в нём нужно осуществить удаление и редактирование определённой строки в.
Удаление из файла определенной записи
Новые записи сохраняются в файле нормально, а вот как удалить определённую запись не могу понять.
Удаление строки из файла\либо удаление самого файла.
День добрый, вот функция(используемые переменные объявленны ранее): void delete_cruise() < FILE.
Удаление определенной строки из Memo
Прювэд народ. Подскажите как из Memo удалять строки начинающиеся с определенного символа.
Нельзя просто из файла удалить строку (если она не последняя, иначе, точно не помню, вроде можно файл урезать), придется записывать в новый файл все, за исключением этой строки.
Одним из решений этой ситуации можно использовать построчное считывание данных из файла по строкам.
Вот краткий пример. (P.S я его не компилил, сейчас просто негде и поэтому возможны опечатки)
Я его не компилил , сейчас просто негде, пишу с планшета. Должно работать, хотя написанный код скорее всего не является оптимальным решением про производительности!
Решение
stawerfar, большое спасибо, сейчас буду тестить
Добавлено через 45 минут
stawerfar, всё очень хорошо работает . Эх. даже стыдно просить . можешь модифицировать свой код так, чтобы он не просто удалял строку, а и заменял её на ту, которую введет пользователь ?
У меня не получается, я вить только недавно начал программировать и не понимаю некоторые части кода.
file_out.write(line_file_text.c_str(), line_file_text.size());
file_out.clear();
А как можно сделать удаление, но не по номеру, а по содержимому?
Добавлено через 37 секунд
я просто написал программу, но результата нету
Удаление определенной строки из файла
Хаи гайсы. Объясняю ситуацию. У меня есть текстовый файл. При работе он будет большим, в ней.
Удаление определённой строки из .txt
Искал на форуме, так должного ответа и не нашёл. Как из .txt удалить определённую строку.
Удаление текста до определенной строки
Есть TextBox, который содержит в себе следующие данные: Сравнить Сравнить . Машина.
Удаление из строки определенной ее части
Всем привет! Подскажите пожалуйста, каким образом можно удалить из строки известную часть. вообще.
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
этот код удаляет если батник и файл лежат в одном каталоге, а как сделать, чтобы можно было удалить эту строчку со всех файлов с именем your_file.txt лежащих в этом каталоге и подкаталогов. Например со всего диска d?
Конфигурация компьютера | |
Процессор: Intel Core 2 Quad Q9300, 2500 MHz (7,5 x 333) | |
Материнская плата: Asus P5Q PRO | |
Память: Transcend 2048x2 4096 Мб (DDR2-1066 DDR2 SDRAM) | |
HDD: Seagate ST3250410AS (250 Гб, 7200 RPM, SATA-II) + STM31000528AS (1 Тб, 7200 RPM, SATA-II) | |
Видеокарта: Asus EAH3650 (RV635) | |
Звук: Realtek ALC1200 (встроенный) | |
Блок питания: ExeGate 350W | |
CD/DVD: Optiarc DVD RW AD-7170S | |
Монитор: Samsung SyncMaster 971P 19'' | |
ОС: Windows 7 Ultimate SP1 (x64) | |
Индекс производительности Windows: 5,9 |
Здравствуйте, помогите пожалуйста решить задачу
Есть текстовый файл содержащий большое количество строк
нужно удалить строки содержащие определенные слова
пробовал это:
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
set src=1.txt
set dest=1_1.txt
set seek=нужные слова
2>nul del "%dest%"
find /i "%seek%" < "%src%" >"%src%_"
exit /B
и вот это:
@echo off
type 1.txt | find /v /i "Ненужное слово" > file.temp
echo.Y | move file.temp 2.txt
строки удаляются корректно, но:
есть символ в виде квадрата, в начале каждой строки, как я понял это символ переноса строки,
при использовании доступных на этом форуме советов по автоудалению строк,
конечный файл получается без этих самых "квадратиков", хотя строки удаляются корректно
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
этот код удаляет если батник и файл лежат в одном каталоге, а как сделать, чтобы можно было удалить эту строчку со всех файлов с именем your_file.txt лежащих в этом каталоге и подкаталогов. Например со всего диска d?
Конфигурация компьютера | |
Процессор: Intel Core 2 Quad Q9300, 2500 MHz (7,5 x 333) | |
Материнская плата: Asus P5Q PRO | |
Память: Transcend 2048x2 4096 Мб (DDR2-1066 DDR2 SDRAM) | |
HDD: Seagate ST3250410AS (250 Гб, 7200 RPM, SATA-II) + STM31000528AS (1 Тб, 7200 RPM, SATA-II) | |
Видеокарта: Asus EAH3650 (RV635) | |
Звук: Realtek ALC1200 (встроенный) | |
Блок питания: ExeGate 350W | |
CD/DVD: Optiarc DVD RW AD-7170S | |
Монитор: Samsung SyncMaster 971P 19'' | |
ОС: Windows 7 Ultimate SP1 (x64) | |
Индекс производительности Windows: 5,9 |
Здравствуйте, помогите пожалуйста решить задачу
Есть текстовый файл содержащий большое количество строк
нужно удалить строки содержащие определенные слова
пробовал это:
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
set src=1.txt
set dest=1_1.txt
set seek=нужные слова
2>nul del "%dest%"
find /i "%seek%" < "%src%" >"%src%_"
exit /B
и вот это:
@echo off
type 1.txt | find /v /i "Ненужное слово" > file.temp
echo.Y | move file.temp 2.txt
строки удаляются корректно, но:
есть символ в виде квадрата, в начале каждой строки, как я понял это символ переноса строки,
при использовании доступных на этом форуме советов по автоудалению строк,
конечный файл получается без этих самых "квадратиков", хотя строки удаляются корректно
Читайте также: