Vbs копирование текста из файла в файл
FileSystemObject (далее FSO) предоставляет некоторые возможности для работы с текстовыми файлами. Можно создавать, удалять, копировать и перемещать файлы.
Для создания текстового файла применяют метод CreateTextFile . Синтаксис:
FSO.CreateTextFile( [, overwrite[, unicode]])
filename – имя создаваемого файла.
owerwrite – логический параметр (true или false), указывает, перезаписывать ли уже существующий файл с таким именем.
unicode – логический параметр (true или false), определяющий кодировку создаваемого файла. По умолчанию используется кодировка ASCII. Если принимает значение true – то файл создается в кодировке unicode.
Dim FSO, MyFile
Set FSO = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("c:\testfile.txt", true)
var FSO = new ActiveXObject("Scripting.FileSystemObject");
var MyFile = fso.CreateTextFile("c:\\testfile.txt", true);
Для проверки существования файлов служит метод FileExists.
Set FSO = CreateObject("Scripting.FileSystemObject")
If (FSO.FileExists("c:\autoexec.bat")) Then
MsgBox "Файл autoexec.bat существует"
Else
MsgBox "Файл autoexec.bat не существует"
End If
var FSO = new ActiveXObject("Scripting.FileSystemObject");
if (FSO.FileExists("c:\\autoexec.bat"))
WScript.Echo("Файл autoexec.bat существует");
else
WScript.Echo("Файл autoexec.bat не существует");
Для других операций над файлом, таких как копирование, перемещение и удаление файл должен быть сначала “получен” методом GetFile .
Set FSO = CreateObject("Scripting.FileSystemObject")
Set file1 = FSO.GetFile(“MyFile.txt”)
var FSO = new ActiveXObject("Scripting.FileSystemObject");
var file1 = FSO.GetFile(“MyFile.txt”);
Для копирования, перемещения и удаления файлов объект FSO предоставляет несколько методов, в зависимости от того какой объект будет использоваться для операций FSO или file. Они показаны в следующей таблице.
Действие | Объект.Метод |
Перемещение | File.Move или FileSystemObject.MoveFile |
Копирование | File.Copy или FileSystemObject.CopyFile |
Удаление | File.Delete или FileSystemObject.DeleteFile |
Set FSO = CreateObject("Scripting.FileSystemObject")
Set file1 = FSO.CreateTextFile("c:\test.txt")
Set file2 = FSO.GetFile("c:\test.txt")
file2.Copy("c:\0\test1.txt")
FSO = new ActiveXObject("Scripting.FileSystemObject");
var file1 = FSO.CreateTextFile("c:\\test.txt");
var file2 = FSO.GetFile("c:\\test.txt");
file2.Copy("c:\\0\\test1.txt");
Перемещение файлов осуществляется аналогично методу копирования.
Set FSO = CreateObject("Scripting.FileSystemObject")
Set file1 = FSO.CreateTextFile("test.txt")
‘закрываем файл (см.работа с содержанием файла)
‘если не закрыть файл, то он не может быть удален методом Delete
file1.Close
MsgBox "Файл создан"
Set file2 = FSO.GetFile("test.txt")
file2.Delete
MsgBox "Файл удален"
FSO = new ActiveXObject("Scripting.FileSystemObject");
var file1 = FSO.CreateTextFile("test.txt");
//закрываем файл (см.работа с содержанием файла);
//если не закрыть файл, то он не может быть удален методом Delete
file1.Close();
WScript.Echo("Файл создан");
var file2 = FSO.GetFile("test.txt");
file2.Delete();
WScript.Echo("Файл удален");
object - File объект
С помощью объекта FSO нам доступны такие свойства файла, как его размер, время создания и т.д.
Size – возвращает размер файла в байтах
Set FSO = CreateObject("Scripting.FileSystemObject")
'получаем текущий файл:
Set file1 = FSO.GetFile(WScript.ScriptFullName)
'получаем размер:
fsize = file1.Size
MsgBox "Размер файла " & WScript.ScriptName &_
" : " & fsize &" килобайт"
FSO = new ActiveXObject("Scripting.FileSystemObject");
//получаем текущий файл:
var file1 = FSO.GetFile(WScript.ScriptFullName);
//получаем размер:
var fsize = file1.Size;
WScript.Echo("Размер файла " + WScript.ScriptName +
" : " + fsize +" килобайт");
DateCreated – время создания файла
DateLastAccessed - время последнего обращения
DateLastModified - время последнего изменения
Set FSO = CreateObject("Scripting.FileSystemObject")
'получаем текущий файл:
Set file1 = FSO.GetFile(WScript.ScriptFullName)
‘получаем время создания:
DC = file1.DateCreated
info = "Файл " & WScript.ScriptName & " :" & Chr(10)
info = info & "Создан: " & DC & Chr(10)
‘получаем время последнего открытия:
DLA = file1.DateLastAccessed
info = info & "Открыт: " & DLA & Chr(10)
‘получаем время последнего изменения:
DLM = file1.DateLastModified
info = info & "Изменен: " & DLM
MsgBox info
FSO = new ActiveXObject("Scripting.FileSystemObject");
//получаем текущий файл:
var file1 = FSO.GetFile(WScript.ScriptFullName);
Есть три способа создания пустого текстового файла (иногда называемого как «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».
ПРИМЕЧАНИЕ
Символ новой строки содержит символ или символы (зависит от операционной системы) для перевода курсора в начало новой строки (возврат каретки/перевод строки). Следует учитывать, что некоторые строки уже могут иметь в конце эти непечатаемые символы.
В следующем примере показано, как выполняется запись данных в открытый файл всеми тремя методами, затем файл закрывается:
Чтение текстового файла на VBScript
Первый способ
Воспользоваться OpenTextFile. Например, прочитаем файл test.txt
OpenTextFile(filename [,iomode [,create [,format]]])
filename - имя файла который необходимо прочитать
iomode - режим открытия файла (1 - только чтение, 2 - для записи (если уже существует, будет перезаписан), 8 - для добавления)
create - true - создать файл, если он не существует, false - не создавать
format - кодировка (-2 - кодировка ОС по умолчанию, -1 - Unicode, 0 - ASCII)
Непосредственно для чтения самих данных из текстового файла можно воспользоваться одним из следующих операторов:
- Read - чтение определенного количества символов независимо от конца строки (количество символов указывается в скобках после оператора)
- ReadLine - прочитать строку полностью до конца (до символов перевода строки), т.е. построчное чтение текстового файла
- ReadAll - прочитать весь файл целиком за раз, включая символы переноса строки.
Эти же приемы чтения файла можно использовать и в следующем способе.
Чтение файлов
Для чтения данных из файла используйте методы 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.
Работа с текстовыми файлами по-прежнему актуальна. Эта небольшая заметка для того, чтобы быстро вспомнить как записать или прочитать текстовый файл на VBScript.
Запись текстового файла на VBScript
Создать и записать текстовый файл можно использовав один из трех операторов:
Пример использования CreateTextFile
Второй параметр указывает перезаписать или нет файл, если он существует. Так же можно добавить 3-й параметр, который будет означать кодировку (True - Unicode и False - ASCII)
Пример использования OpenTextFile
Здесь использован режим записи 8, т.е. добавление в существующий файл дополнительных строк, при этом, если файла не существует, он будет создан, т.к. третий параметр True.
Пример использования OpenAsTextStream
Здесь мы создаем файл и записываем в него текст. Если файл уже существовал, он будет перезаписан.
Так же как и с чтением файла, есть несколько вариантов какие операторы использовать для записи:
- Write - записать текст в файл без символов перевода строки
- WriteLine - записать текст в файл и добавить символы перевода строки (построчная запись в файл)
- WriteBlankLines - записать в файл указанное количество пустых строк
Думаю, предложенных способов вполне достаточно для чтения / записи текстовых файлов. Пожелания и замечания оставляйте в комментариях ниже.
Удалить нужные строки получается, а вот как вставить новый текст не смогла найти информацию.
Как можно вставить многострочный текст (порядка 800 строк) из другого файла в известный номер строки?
Грубо говоря, взять один файл и перенести всё что там есть в другой файл в номер строки начиная с 4, при этом сместив текст в исходном, но не удаляя его.
Пример кода текста
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.
После четвертой строки первого файла вставится построчно содержимое второго файла, а после - остаток первого. Недостатки - циклом For игнорируются пустые строки, из-за EnableDelayedExpansion игнорируются все восклицательные знаки в тексте.
После четвертой строки первого файла вставится построчно содержимое второго файла, а после - остаток первого. Недостатки - циклом For игнорируются пустые строки, из-за EnableDelayedExpansion игнорируются все восклицательные знаки в тексте.» |
ой нет, восклицательные знаки там обязательны.
Я просто думала, что на ssed так же просто, как и удалить, можно вставить текст.
Я просто думала, что на ssed так же просто, как и удалить, можно вставить текст. » |
Может быть. Я с ним не работал.
А где можно задать номер строки, с которой начинать, а также файл с которого берём и куда вставляем?
Я образно сказала с 4. а так таких вставок будет несколько. Я просто продублирую скрипт.
Если я правильно поняла, то вот эта строка
А в каком формате туда вставлять?
Для текущего каталога пути, разумеется, можно опускать.
P.S. Пример рассчитан на одну вставку за раз.
Всё отлично работает!
Я хотела бы ещё уточнить, возможно ли запустить bat, перетащив на него файл (drag and drop)?
он работает, когда только файл zip рядом с bat-файлом. конечно можно прописать путь и тогда он начнёт работать из прописанной директории и при этом будет распаковывать все zip в этой директории. Можно прописать название zip, но архивы имеют разные имена.
Пробовала даже в Bat To Exe Converter делать exe, но всё равно не получается перетаскиванием нужного файла на ярлык запустить его обработку.
Если я верно понимаю, то нужно вместо * вставить какое-то значение, которое будет передаваться при перетаскивании объекта.
Как мы уже говорили, В 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: Осуществить поиск директории и вывести процесс выполнения в новый текстовый файл, после чего вывести его содержимое.
Второй способ
Использовать GetFile и OpenAsTextStream. Принцип чтения такой же как и в первом способе, просто другой вариант открытия файла.
В скобках оператору OpenAsTextStream передается режим открытия файла iomode, который описан выше. Так же можно передать второй параметр, который будет означать кодировку format.
Читайте также: