Vbs удалить строку из текстового файла
Как мы уже говорили, В VBS для работы с файловой системой существует FileSystemObject.
При помощи FSO можно работать с файлами. Алгоритм начала работы такой:
1. Объявляем переменную. Не обязательно такое же название, но оно наиболее логичное. А ещё, ваш код будет понятнее для других.
Dim FSO
2. Записываем в переменную FSO копию объекта FileSystemObject, который предназначен для работы с файловой системой Windows
Set FSO=CreateObject(«Scripting.FileSystemObject»)
Теперь, давайте ознакомимся с небольшим арсеналом методов:
FSO.GetBaseName(ПутьКФайлу) — Вернёт имя файла без расширения
FSO.GetExtensionName(ПутькФайлу) — Вернёт расширение файла
FSO.GetFileName(ПутьКФайлу) — Вернёт имя файла с расширением
FSO.GetParentFolderName(ПутьКФайлу) — Вернёт каталог, в котором находится файл
FSO.FileExists(ПутьКФайлу) — Проверяет, существует ли файл. Если да, то значение True.
FSO.GetTempName() — Возвращает случайное имя для временного файла
Для получения доступа к файлу необходимо выполнить fso.GetFile(ПутьКФайлу) в какую либо переменную. Например:
SET File=fso.GetFile(«C:\q1\q1.txt»)
Далее мы сможем выполнить для указанного файла следующее:
File.Copy(ПолныйПуть) — Копировать файл в указанное место. Путь необходимо указывать полный, с названием файла и его расширением.
Например: File.Copy(«C:\q1\new\q1.txt»)
Так же мы можем:
File.Move(ПолныйПуть) — Перемещаем файл
File.Delete — удаляем полученный файл. Указывать путь не надо
Но самое полезное — работа с текстовым файлом, так называемое Text Stream.
Итак, работа с текстом.
Не забываем, что в любом случае код наш начнётся с
Dim FSO
Set FSO=CreateObject(«Scripting.FileSystemObject»)
Теперь, давайте рассмотрим наши возможности:
1. Создание текстового файла
Set File=FSO.CreateTextFile(полный_путь_к_файлу)
2. Открытие текстового файла
Set txtfile = fso.OpenTextFile(«c:\test.txt»)
3. Чтобы добавлять в файл текст, нужно его открыть для записи
Set ts = fso.OpenTextFile(«c:\test.txt», ForWriting, True)
Set tfile = fso.GetFile(«c:\test1.txt»)
Set tf = tfile.OpenAsTextStream(ForWriting, True)
Теперь, давайте разберёмся, как записывать в файл текст. Для этого есть следующие методы:
Write — записывает символы в файл.
WriteLine — записывает строку в файл.
WriteBlankLines(число) — записывает пустые строки в файл.
Skip(число) — пропускает нужное число символов в строке.
SkipLine — пропускает строку.
Давайте приведём пример создания файла и записи в него текста.
Как мы видим, строки 4, 5 и 6 запишут в одну строчку «Раз Два Три!». 7 строчка вставит 3 пустых строки, а 8 строчка кода добавит в файл строчку «Ёлочка гори!!» и перейдёт на след. строку. Ну и 9 строчка закроет файл.
Теперь поговорим про чтение из файла:
Read(число) — читает указанное количество символов из файла.
ReadLine — читает строку из файла.
ReadALL — читает всё содержимое
Skip(число) — пропускает нужное число символов в строке.
SkipLine — пропускает строку.
Приведём пример считывания текста из файла:
А так же есть не менее полезные вещи:
AtEndOfLine — Определяет достигнут ли конец строки(Boolean).
AtEndOfStream — Определяет достигнут ли конец файла(Boolean).
Column — номер текущего символа в строке.
Line — номер текущей строки.
Первые два метода можно использовать для условий того же Do While или Do Until. Например:
Do While Not File.AtEndOfLine
Последние два метода удобно использовать для контролирования процесса считывания, например чтобы при поиске какой либо информации в момент положительного результата знать, в какой же строчке мы нашли искомый текст и на каком символе. Это позволит минимизировать последующие затраты на заводимые переменные и на действия с ними.
Задача1: Дан текстовый файл со списком литературы. Заменить определённые числа в нём и сохранить изменение.
Задача2: Создать текстовый файл, заполненный случайными символами. Вывести его содержимое.
Задача3: Дан текстовый файл, найти в нём какие-либо символы и вывести, в какой строке и на каком месте они стоят.
Задача4: Осуществить поиск директории и вывести процесс выполнения в новый текстовый файл, после чего вывести его содержимое.
Добавлено через 24 минуты
Уточнение. Скрипт при каждом своём запуске должен удалять первую строку, а не сразу все при пересчитывании.
Добавлено через 6 минут
А было бы лучше, если бы удалённую строку перемещал бы в другой текстовый файл, к примеру out.txt
Построчное считывание файла и преобразование считанной строки в число (linux)
Здравствуйте, помогите пожалуйста, нужно последовательно преобразовывать строки файла в числа.
Длина строки, считанной из текстового файла
Скажите, пожалуйста, правильно ли нахожу длину строки. Если написать 2 символа получится 4, а если.
Построчное считывание с файла до конца строки
Можно ли применить в цикле такую конструкцию: while(!\n)<> , чтобы прога считывала только до конца.
Построчное считывание из текстового документа
есть несколько чисел, записанных в блокнот через enter, так: 111 222 333 нужно создать массив.
В созданный файл outfile.txt с добавкой строки. Да, и по окончании строк в исходном файле желательно, чтоб скрипт сообщил об этом, то есть, если скрипт запускается в очередной раз и не видит строк, он должен сообщить. Или, когда обрабатывает последнюю строку, а за ней уже пусто - так будет лучше.
А теперь понятным языком. Что значит "обрабатывает"? Выше ни о какой обработке речь не велась. И что такое "пусто"?
Добавлено через 7 минут
А если вставляю
Решение
Считывание строки с текстового файла
Напишите пожалуйстанаброски как можно считать строку с текстового файла ,для дальнейшей работы с.
Как создавать объекты на основе считанной инфы из текстового файла
Доброго времени суток, столкнулся с такой проблемой: Как создавать на основе считанных данных.
Считывание определенной строки текстового файла
Как с текстового файла считать строку с определенным номером? Нужно сместить файловый указатель.
Присвоить переменной значение, являющееся целой строкой, считанной из текстового файла
День добрый всем:) Есть небольшой код: for /f "UsebackQ skip=%a%" %%A IN ("keyPS.txt") do (set.
Считывание последней строки со спец-символом '\r' из текстового файла
Всем привет! Проблема состояла в том, что моя программа неправильно считывала последнее число в.
Считывание строки под заданным номером из текстового файла
Как считать строку с определенным номером из текстового файла?
Доброго времени суток! Подскажите, пожалуйста, как удалить строку, скрыть или заменить ее на пустую в файлах .htm и .txt при помощи vbs скрипта?
Как удалить строку в файлах .html и .txt
Доброго времени суток! Подскажите, пожалуйста, как удалить строку, скрыть или заменить ее на пустую.
Во всех *.txt файлах директории удалить символ
Добрый день! Проблемка в директории 150 файлов *.txt, нужно удалить один символ из каждого файла.
Как удалить строку из структурированного .txt файла
Слышал что можно пересоздать файл но без строки..но как? как указать что именно N строка мне не.
Можно ли в открытых файлах txt добавить текст на первую строку?
можно ли в открытых файлах txt добавить текст на первую строку? есть несколько открытых файлов.
удалить или заменить строку в текстовом файле средствами vbs вполне возможно (методами стандартного объекта "Scripting.FileSystemObject"), а вот чтобы скрыть строку - тут HTML-документ с js/vbs-скриптами нужен и браузер ещё, или HTA-шка как минимум, в связи с этим хотелось бы "более лучше" уточнить: что именно вы хотите сделать?
в общем есть сайт погоды, оттуда нужен текст для голосового движка, чтобы читало вслух. мне помогли таким скриптом:
так вот скрипт осталяет только текст в хтмл файле, но там мне нужно только 2и3 либо просто 2 строку, в общем несколько файлов с различными вариантами прогнозов(прогноз на сегодня, прогноз на завра, на 3 дня, на неделю и т.д.) Как убрать/скрыть ненужные строки?
Спасибо! Только это прогноз на послезавтра. А как сделать прогноз на сегодня и прогноз на завтра? Какие параметры в коде нужно менять?
И еще вопрос по поводу как удалить в текстовом файле строку полностью, если несложно пример кода можете сделать?
в сохраняемом вашим скриптом файле ("34523.htm") кроме всего прочего имеются 6
которые как раз и содержат прогнозы на разную перспективу, именно прогноз на сегодня и завтра находится в
VBS с "начинкой" из PowerShell:
Спасибо!) Только в этом скрипте тоже на сегодня, завтра и послезавтра прогноз делается. Вот как бы еще его укоротить бы?=)
Решение
Прогноз на сегодня и завтра:
Использовать в нашем случае? Т.е. чтобы вместо строки "Давление заметно выше нормы. Возможны небольшие геомагнитные возмущения." был текст только с текущим давлением: "756-758 мм. рт. ст."?
И как сделать чтобы html файл не открывался из системной папки после выполнения скрипта? Какую именно строчку скрипта нужно удалить? Зараннее спасибо!
Использовать в нашем случае? Т.е. чтобы вместо строки "Давление заметно выше нормы. Возможны небольшие геомагнитные возмущения." был текст только с текущим давлением: "756-758 мм. рт. ст."?
И как сделать чтобы html файл не открывался из системной папки после выполнения скрипта? Какую именно строчку скрипта нужно удалить?
Есть три способа создания пустого текстового файла (иногда называемого как «text stream»).
Первый способ — это использование метода CreateTextFile. В следующем примере показано, как создать текстовый файл, используя этот метод: Пример использования данного метода см. в разделе «3.7. Пример работы с объектом FileSystemObject».
Второй способ — это использование метода OpenTextFile объекта FileSystemObject с набором флагов ForWriting. В следующем примере показано, как создать текстовый файл, используя этот метод: Третий способ — это использование метода OpenAsTextStream с набором флагов ForWriting. В следующем примере показано, как создать текстовый файл, используя этот метод:
Добавление данных в файл
- Открыть текстовый файл
- Записать данные
- Закрыть файл
Для записи данных в текстовый файл используйте методы Write, WriteLine или WriteBlankLines объекта TextStream, в зависимости от задач, описанных в приведённой ниже таблице:
Задача | Метод |
Запись данных в текстовый файл без символа перехода на новую строку в конце | Write |
Запись данных в текстовый файл с символом перехода на новую строку в конце | WriteLine |
Запись одной или более пустых строк в открытый текстовый файл | WriteBlankLines |
Для закрытия текстового файла используйте метод Close объекта TextStream. Закрыть файл можно также методом Close объекта FileSystemObject. Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».
ПРИМЕЧАНИЕ
Символ новой строки содержит символ или символы (зависит от операционной системы) для перевода курсора в начало новой строки (возврат каретки/перевод строки). Следует учитывать, что некоторые строки уже могут иметь в конце эти непечатаемые символы.
В следующем примере показано, как выполняется запись данных в открытый файл всеми тремя методами, затем файл закрывается:
Чтение файлов
Для чтения данных из файла используйте методы Read, ReadLine или ReadAll объекта TextStream. Эти методы и задачи, решаемые с их помощью, описаны в приведённой ниже таблице:
Задача | Метод |
Чтение указанного количества символов из файла | Read |
Чтение полной строки из файла (до символа конца строки, но не включая его) | ReadLine |
Чтение всего содержимого файла | ReadAll |
Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».
Если вы используете методы Read или ReadLine и хотите пропустить определённую часть данных, то используйте методы Scip или ScipLine. Полученный в результате работы этих методов текст может быть сохранён в строку, которую можно отобразить на экране в элементе управления, передать в качестве параметра в строковую функцию (например, в Left, Right или Mid), соединить с другой строкой и т.п.
В следующем примере показано, как открыть файл, записать в него данные, а затем прочитать их:
Перемещение, копирование и удаление файлов
Объектная модель FSO имеет для каждой из операций перемещения, копирования или удаления файлов по два метода. Эти методы и задачи, решаемые с их помощью, описаны в приведённой ниже таблице:
Задача | Метод |
Перемещение файла | File.Move или FileSystemObject.MoveFile |
Копирование файла | File.Copy или FileSystemObject.CopyFile |
Удаление файла | File.Delete или FileSystemObject.DeleteFile |
Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».
В следующем примере создаётся текстовый файл в корневом каталоге диска С, записывается в него некоторая информация. Затем файл перемещается в директорию с именем \tmp, копируется в директорию \temp, а затем удаляются копии из обеих директорий.
Для проверки работы этого примера создайте в корневом каталоге диска С директории tmp и temp.
каждый день мы получаем плоский текстовый файл. Несколько дней в файле есть строки, которые необходимо удалить, прежде чем его можно будет обработать. Эти линии могут появляться в разных местах, но всегда начинаются с символов 6999 или 7999. Мы хотели бы запустить скрипт, который будет удалять эти строки. Однако, и это далеко за пределами меня, где есть строка, которая начинается с 6999, будет строка непосредственно перед ней, которая начинается с 5442, которая также должна быть удалена, но только если она сразу появляется перед строкой 6999.
мы Магазин Windows и будет запускать этот скрипт как часть простого пакетного файла в Windows. Мы не используем Unix или Linux и не желаем этого.
расширение имени файла содержит дату. сегодняшняя файла.100621, завтра будет файл.100622. У меня проблемы с этим аспектом, так как кажется, что VBScript не любит файл.*
вот пример текстового файла:
мы хотели бы удалить 5 строки в этом файле (строка 5442, три строки 6999 и строка 7999).
вот пример скрипта, который я нашел на этом сайте, изменил и имел некоторый успех, но не знаю, как удалить строки (только знаю, как заменить данные в строке). Я понимаю, что это либо потребует серьезных изменений, либо нужно будет вообще выбросить, но я публикую это, чтобы дать представление о том, что, я думаю, мы ищем. Я поместил это в каталог с cscript.exe и назвать его из простого пакетного файла:
что получает меня это:
закрыть! просто нужно удалить строки вместо того, чтобы писать "удалить строку". Так вот мои конкретные потребности, основанные на том, что я знаю:
- получить скрипт для обработки любого файла в каталоге (и будет только 1 за раз, но расширение меняется каждый день)
- получить сценарий для удаления любой строки, которая начинается с 5442, непосредственно перед строкой, которая начинается 6999
- сделать скрипт, чтобы полностью удалить те строки, которые начинаются с и 6999 7999
я внес некоторые изменения, чтобы попытаться устранить пустую строку, я также добавил функцию для цикла через выходной файл и удалить любые пустые строки. Надеюсь, это сработает.
использовать его вызывать ее из командной строки одним из двух способов.
Я думаю, что это сработает (но я не так хорош в VBS, поэтому никаких обещаний):
обратите внимание, что я думаю, что вы проверяли, содержат ли строки цифры в любом месте, но вы сказали, что правило, если они начинаются с чисел, вот почему я делаю <> 1 , а не > 0 .
Это будет мой псевдо-алгоритм для решения этой проблемы:
(Я скорее научу вас своим мыслям о том, как я бы его решил, чем предоставлю сам код)
сделать простой файл "config" для этой программы тоже. Каждая строка может представлять собой "фильтр", а затем вы можете добавить действия к строкам, если это необходимо.
как в [pattern] [action]
файл обработки " XXXXXXXXX.log " (или любое другое имя) Загрузите все строки, если их не слишком много или readline, чтобы захватить один (в зависимости от производительности и использования памяти)
для каждой строки возьмите первые 4 буквы из строки.
теперь нам понадобится строка для разбора:
поскольку нам нужны только первые 4 символа, чтобы решить, нужно ли нам его сохранить.
Если это " sLine" (строка) находится в нашем массиве фильтров/шаблонов, тогда у нас есть совпадение. сделайте то, что мы настроили (в вашей текущей настройке - удалить = игнорировать строку).
6b. Если нет совпадения в массиве шаблонов, то у нас есть линия для хранения. Запишите это в выходной поток.
закрыть вход и выход файл.
Это не просто чистый VBSCRIPT, но идея алгоритма ann для любого языка.
Я надеюсь, что вы можете увидеть мою идею в нем, иначе вы просто прокомментируете ее, и я попытаюсь развить ее. Надеюсь, я дал вам отличный ответ.
OK, вот окончательный сценарий, как awesomely собранный Tester101. Этот скрипт удаляет строки, которые не нужны, как описано выше. Он также имеет дело с линиями, которые находятся в конце каждой строки (без моего ведома)
Читайте также: