WSH. Примеры. Операции с файлами.
Большинство приводимых здесь примеров уже присутствую в разделе Объект FileSystemObject. Однако в справочных целях для работы с файлами, как мне кажется, пользоваться этой страницей удобнее ввиду гораздо меньшего объема и сугубо практической группировки материала.
- Проверка наличия файла
- Создать файл
- Создать временный файл
- Читать файл
- Писать в файл
- Удалить
- Копировать
- Переместить
- Получение сведений о файле
- Изменить атрибуты файла
- Выбор файла через проводник
Проверка наличия файла
function ReportFileStatus(filespec)
{
var fso, s = filespec;
fso = new ActiveXObject("Scripting.FileSystemObject");
if (fso.FileExists(filespec))
s += " exists.";
else
s += " doesn't exist.";
return(s);
}
Создать файл
var fso = new ActiveXObject("Scripting.FileSystemObject");
var a = fso.CreateTextFile("c:\\testfile.txt", true);
a.WriteLine("This is a test.");
a.Close();
CreateTextFile(Filename, Overwrite, Unicode)
Назначение: создаёт новый текстовый файл и возвращает объект "TextStream", указывающий на него.
Параметры:
Filename - строка, имя файла.
Overwrite - необязательный, булево (число). Перезаписывать файл, если он существует (True), или нет (False). По умолчанию - False. Если указано False и файл существует - произойдёт ошибка.
Unicode - необязательный, булево (число). Файл в формате Unicode (True), или ASCII (False). По умолчанию - False.
Создать временный файл
var fso, tempfile;
fso = new ActiveXObject("Scripting.FileSystemObject");
function CreateTempFile()
{
var tfolder, tfile, tname, fname, TemporaryFolder = 2;
tfolder = fso.GetSpecialFolder(TemporaryFolder);
tname = fso.GetTempName();
tfile = tfolder.CreateTextFile(tname);
return(tfile);
}
tempfile = CreateTempFile();
tempfile.writeline("Hello, World");
tempfile.close();
GetSpecialFolder(Folderspec)
Назначение: возвращает объект "Folder" для некоторых специальных папок Windows.
Folderspec - число, определяет специальную папку. Возможные значения:
0 - Каталог Windows.
1 - Системный каталог библиотек и драйверов.
2 - Каталог временных файлов, путь к которому хранится в переменной среды "TMP".
Описание: если каталог не существует, произойдёт ошибка.
GetTempName()
Возвращает случайным образом сгенерированное имя файла, которое может быть использовано для создания временного файла.
Читать файл
Чтение текстового файла построчно
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:\boot.ini")
Set TextStream = File.OpenAsTextStream(1)
Str = vbNullString
While Not TextStream.AtEndOfStream
Str = Str & TextStream.ReadLine() & vbCrLf
Wend
MsgBox Str
TextStream.Close
Чтение всего файла в строку
function GetEverything()
{
var fso, f;
var ForReading = 1;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.OpenTextFile("c:\\testfile.txt", ForReading);
return(f.ReadAll());
}
Писать в файл
write(String)Назначение: записывает в файл указанную строку. Символы возврата каретки и новой строки в файл не записываются.
WriteLine(String)
Назначение: записывает в файл указанную строку. В файл записываются символы возврата каретки и новой строки.
Параметры:
String - необязательный, строка для записи в файл. Если опущен, в файл записывается пустая строка.
WriteBlankLines(Lines)
Назначение: записывает в файл указанное количество пустых строк (символы возврата каретки и новой строки).
function WriteBlanksDemo()
{
var fso, f, r;
var ForReading = 1, ForWriting = 2;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.OpenTextFile("c:\\testfile.txt", ForWriting, true);
f.Write("Hello world!");
f.WriteBlankLines(2);
f.Write("JScript is fun!");
f.Close();
f = fso.OpenTextFile("c:\\testfile.txt", ForReading);
r = f.ReadAll();
return(r);
}
Удалить файл
function DeleteFile(filespec)
{
var fso;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.DeleteFile(filespec);
}
DeleteFile(Filespec,Force>)
Назначение: удаляет указанный файл.
Filespec - строка, путь к файлу. В последнем компоненте параметра можно использовать групповые символы "*" и "?".
Force - необязательный, булево (число). Определяет, удалять или нет файлы с атрибутом read-only. По умолчанию - False (не удалять).
Копировать
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.CopyFile("c:\\mydocuments\\letters\\*.doc", "c:\\tempfolder\\")
Переместить
function MoveFile2Desktop(filespec)
{
var fso;
fso = new ActiveXObject("Scripting.FileSystemObject");
fso.MoveFile(filespec, "c:\\windows\\desktop\\");
}
Процесс перемещения прерывается после первой возникшей ошибки. Если перемещаемый файл уже существует или является папкой, возникнет ошибка.
Получение сведений о файле
function ShowFileInfo(filespec)
{
var fso, f, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filespec);
s = "Created: " + f.DateCreated;
return(s);
}
Приведенный выше пример возвращает дату создания файла.
В следующем примере определяется дата последнего доступа к файлу
function ShowFileLastAccessed(filespec)
{
var fso, f, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filespec);
s = filespec.toUpperCase() + "\n";
s += "Last Accessed: " + f.DateLastAccessed;
return(s);
}
Определить дату последней модификации файла.
function ShowFileLastModified(filespec)
{
var fso, f, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filespec);
s = filespec.toUpperCase() + "\n";
s += "Last Modified: " + f.DateLastModified;
return(s);
}
Общий пример
function ShowFileAccessInfo(filespec)
{
var fso, f, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filespec);
s = f.Path.toUpperCase() + "\n";
s += "Created: " + f.DateCreated + "\n";
s += "Last Accessed: " + f.DateLastAccessed + "\n";
s += "Last Modified: " + f.DateLastModified
return(s);
}
Изменить атрибуты файла
function ToggleArchiveBit(filespec)
{
var fso, f, r, s;
fso = new ActiveXObject("Scripting.FileSystemObject");
f = fso.GetFile(filespec)
if (f.attributes && 32)
{
f.attributes = f.attributes - 32;
s = "Archive bit is cleared.";
}
else
{
f.attributes = f.attributes + 32;
s = "Archive bit is set.";
}
return(s);
}
Выбор файла через проводник
var objDialog = new ActiveXObject('UserAccounts.CommonDialog');
objDialog.Filter="WSH скрипты (*.vbs, *.js)|*.vbs;*.js|Все файлы (*.*)|*.*";
objDialog.InitialDir ="c:\\";
var intResult = objDialog.ShowOpen();
if (intResult == 0) WScript.quit(); else WScript.Echo(objDialog.FileName);
Для вопросов, обсуждений, замечаний, предложений и т. п. можете использовать раздел форума этого сайта (требуетс¤ регистраци¤).