Vba excel свойства файла

Свойства файла: вывод информации о файле, доступной для просмотра через контекстное меню любого файла (кнопка «Свойства»), из кода VBA Excel.

Вывод информации о файле

В контекстном меню любого файла есть кнопка «Свойства», при нажатии которой открывается окно с информацией о файле. Эта информация может быть выведена для просмотра с помощью кода VBA Excel.

Получение свойств любого файла программным способом на примере файла "Схема Белоусова.png", расположенного в папке "C:UsersEvgeniyDownloads":

Sub FileInfo()

Dim ns As Object, i As Integer, n As Integer

Set ns = CreateObject(«Shell.Application»).Namespace(«C:UsersEvgeniyDownloads»)

    For i = 0 To 303

        If ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png«), i) <> «» Then

            n = n + 1

            Cells(n, 1) = ns.GetDetailsOf(«Схема Белоусова.png«, i) & « = » & ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png«), i)

        End If

    Next

Set ns = Nothing

End Sub

Если убрать из кода условие, будут отображены все свойства файла, включая свойства без значений. Общее количество свойств — 304.


Выражение

CreateObject(«Shell.Application»).Namespace(«C:UsersEvgeniyDownloads«)

возвращает ссылку на объект Folder для указанной папки («C:UsersEvgeniyDownloads»).


Выражение

ns.GetDetailsOf(«Схема Белоусова.png», i)

возвращает наименование свойства указанного файла («Схема Белоусова.png») под номером i.


Выражение

ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png»), i)

возвращает значение свойства указанного файла («Схема Белоусова.png») под номером i.

Ширина и высота изображения

Извлечение отдельных свойств файла рассмотрим на примере ширины и высоты изображения. Вывести значение свойства можно по его наименованию или порядковому номеру (индексу).

Определяем индексы ширины и высоты в списке свойств изображения:

Sub TestWidthHeight()

Dim ns As Object, i As Integer

Set ns = CreateObject(«Shell.Application»).Namespace(«C:UsersEvgeniyDownloads»)

    For i = 0 To 303

        If ns.GetDetailsOf(«Схема Белоусова.png«, i) = «Ширина» Or ns.GetDetailsOf(«Схема Белоусова.png«, i) = «Высота» Then

            Debug.Print ns.GetDetailsOf(«Схема Белоусова.png«, i) & « = » & ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png«), i) & «, Id = « & i

        End If

    Next

Set ns = Nothing

End Sub

Результат работы кода:

Чтобы можно было присвоить значения ширины и высоты числовым переменным, необходимо убрать непечатные символы перед числами и отбросить текстовые части:

Sub ImageWidthHeight()

Dim ns As Object, myWidth As Integer, myHeight As Integer

Set ns = CreateObject(«Shell.Application»).Namespace(«C:UsersEvgeniyDownloads»)

    myWidth = Val(Mid(ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png«), 167), 2))

    myHeight = Val(Mid(ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png«), 169), 2))

Set ns = Nothing

    Debug.Print myWidth

    Debug.Print myHeight

End Sub

Применение свойств файла

Представленный ниже код VBA Excel выполняет следующие операции:

  • присваивает числовым переменным myWidth и myHeight значения ширины и высоты, извлеченные из информации о файле изображения;
  • задает ширине и высоте фигуры на рабочем листе размеры изображения;
  • добавляет фигуре ссылку на фоновое изображение.

Sub Primer()

Dim ns As Object, myWidth As Integer, myHeight As Integer

    Set ns = CreateObject(«Shell.Application»).Namespace(«C:UsersEvgeniyDownloads»)

        myWidth = Val(Mid(ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png«), 167), 2))

        myHeight = Val(Mid(ns.GetDetailsOf(ns.ParseName(«Схема Белоусова.png«), 169), 2))

    Set ns = Nothing

Dim myShap As Shape

Set myShap = ActiveSheet.Shapes(«Блоксхема: процесс 9«)

    With myShap

        .Width = myWidth

        .Height = myHeight

        .Fill.UserPicture «C:UsersEvgeniyDownloadsСхема Белоусова.png«

    End With

End Sub


Фразы для контекстного поиска: информация о файле.


 

ZVI

Пользователь

Сообщений: 4328
Регистрация: 23.12.2012

Немного подправил код (подключил параметр i):  

  Function GetFileInfo(PathName As String, FileName As String, Optional i)  
 ‘ ZVI:2011-08-29

http://www.planetaexcel.ru/forum.php?thread_id=31105  

 ‘ Получение свойств файла  
 ‘——————-  
 ‘ PathName — папка  
 ‘ FileName — имя файла  
 ‘ i — номер свойства (см ниже),  
 ‘ если параметр i не указан, то возвращается массив свойств  
 ‘——————-  
 ‘i = 0-Имя,1-Размер,2-Тип,3-Изменен,4-Дата создания,5-Открыт  
 ‘i = 6-Атрибуты,7-Состояние,8-Владелец,9-Автор,10-Заголовок  
 ‘i = 11-Тема,12-Категория,13-Страницы,14-Комментарий  
 ‘——————-  
 Dim a, j&  
 If Dir(PathName & IIf(Right(PathName, 1) <> «», «», «») & FileName) = «» Then Exit Function  
 With CreateObject(«Shell.Application»).Namespace((PathName))  
   If IsMissing(i) Then  
     ReDim a(0 To 14)  
     For j = 0 To UBound(a)  
       a(j) = .GetDetailsOf(.ParseName((FileName)), j)  
     Next  
   Else  
     a = .GetDetailsOf(.ParseName((FileName)), i)  
   End If  
 End With  
 GetFileInfo = a  
End Function  

  Sub ShowFileInfo()  
 Dim x  
 x = GetFileInfo(«C:Temp», «Test.xls»)  
 If IsArray(x) Then  
   Debug.Print «Имя:», x(0)  
   Debug.Print «Размер:», x(1)  
   Debug.Print «Тип:», x(2)  
   Debug.Print «Изменен:», x(3)  
   Debug.Print «Создан:», x(4)  
   Debug.Print «Открыт:», x(5)  
   Debug.Print «Аттрибут:», x(6)  
   Debug.Print «Состояние:», x(7)  
   Debug.Print «Владелец:», x(8)  
   Debug.Print «Автор:», x(9)  
   Debug.Print «Заголовок:», x(10)  
   Debug.Print «Тема:», x(11)  
   Debug.Print «Категории:», x(12)  
   Debug.Print «Страницы:», x(13)  
   Debug.Print «Комментарий:», x(14)  
 Else  
   Debug.Print «Файл не найден»  
 End If  
End Sub  

  Sub Test_ShowAuthor()  
 Debug.Print «Автор:», GetFileInfo(«C:Temp», «Test.xls», 9)  
End Sub

Homophobic

0 / 0 / 0

Регистрация: 08.11.2016

Сообщений: 11

1

Извлечение свойств файла

11.01.2018, 12:30. Показов 4831. Ответов 12

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Добрый день!

Стоит задача извлечения определённых свойств файла(ов) (имя, дата изменения и размер).

Нашёл код и немного доработав получил следующее:

Visual Basic
1
2
3
4
5
6
7
Sub load_file()
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile(Application.GetOpenFilename)
Cells(Selection.Row, 11) = File.Name
Cells(Selection.Row, 12) = File.DateLastModified
Cells(Selection.Row, 13) = File.Size
End Sub

Подскажите, как выбрать изменить начальный каталог открытия файла и что дописать, что бы при нажатии «Отмена» не выскакивала ошибка?

Возможно ли данные свойства получить не через окно открытия, а при помощи ссылки на файл? Имею ввиду примерно следующее:

Visual Basic
1
2
3
4
5
With ActiveSheet
      For I = 1 To .Hyperlinks.Count
            .Hyperlinks(I).Range.Offset(0,1).Value = .Hyperlinks(I).Address
      Next I
End With

Только вместо адреса выше упомянутые свойства что бы извлекались



0



Остап Бонд

Заблокирован

11.01.2018, 12:52

2

Цитата
Сообщение от Homophobic
Посмотреть сообщение

что дописать, что бы при нажатии «Отмена» не выскакивала ошибка?

Visual Basic
1
2
3
4
5
6
7
8
9
Sub load_file()
fn = Application.GetOpenFilename
If TypeName(fn) = "Boolean" Then Exit Sub
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile(fn)
Cells(Selection.Row, 11) = File.Name
Cells(Selection.Row, 12) = File.DateLastModified
Cells(Selection.Row, 13) = File.Size
End Sub

Цитата
Сообщение от Homophobic
Посмотреть сообщение

при помощи ссылки на файл?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub load_file()
Set FSO = CreateObject("Scripting.FileSystemObject")
With ActiveSheet
  For I = 1 To .Hyperlinks.Count
    Set File = FSO.GetFile(.Hyperlinks(I).Address)
    .Hyperlinks(I).Range.Offset(0, 1).Value = File.Name
    .Hyperlinks(I).Range.Offset(0, 2).Value = File.DateLastModified
    .Hyperlinks(I).Range.Offset(0, 3).Value = File.Size
  Next I
End With
End Sub



1



0 / 0 / 0

Регистрация: 08.11.2016

Сообщений: 11

11.01.2018, 14:09

 [ТС]

3

Set File = FSO.GetFile(.Hyperlinks(I).Address)

На этой строке выдает ошибку «Run-time error ’53’: File not found» я так понимаю, что на относительных ссылках.



0



Остап Бонд

Заблокирован

11.01.2018, 14:14

4

Homophobic, думаете я вижу отсюда, что там в ваших ссылках?



0



Homophobic

0 / 0 / 0

Регистрация: 08.11.2016

Сообщений: 11

17.01.2018, 17:42

 [ТС]

5

Я имею ввиду, что данная команда работает с абсолютными гиперссылками, а на относительных выдает ошибку.
Конкретно на примере (в архиве папка с двумя файлами – ексель и тот на который ссылаюсь)
Первая строка – абсолютная ссылка на файл, вторая – относительная.
Вот почему программа на относительной ссылке ошибку выдает?
Ведь в случае выполнения кода

Visual Basic
1
2
3
4
5
With ActiveSheet
      For I = 1 To .Hyperlinks.Count
            .Hyperlinks(I).Range.Offset(0,1).Value = .Hyperlinks(I).Address
      Next I
End With

функция корректно работает и для абсолютных и для относительных гиперссылок

Вложения

Тип файла: rar VBA.rar (14.7 Кб, 7 просмотров)



0



Остап Бонд

Заблокирован

17.01.2018, 18:46

6

Homophobic, ну так работайте с относительными ссылками — кто мешает:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub load_file()
Set FSO = CreateObject("Scripting.FileSystemObject")
With ActiveSheet
  For I = 1 To .Hyperlinks.Count
    .Hyperlinks(I).Range.Offset(0, 1).Value = .Hyperlinks(I).Address
    Set File = FSO.GetFile(ThisWorkbook.Path & "" & .Hyperlinks(I).Address)
    .Hyperlinks(I).Range.Offset(0, 4).Value = File.Name
    .Hyperlinks(I).Range.Offset(0, 2).Value = File.DateLastModified
    .Hyperlinks(I).Range.Offset(0, 3).Value = File.Size
  Next I
End With
End Sub

Отличить абсолютную ссылку от относительной можно по маске

Visual Basic
1
2
3
4
5
if .Hyperlinks(I).Address like "?:*"then
  Set File = FSO.GetFile(.Hyperlinks(I).Address)
else
  Set File = FSO.GetFile(ThisWorkbook.Path & "" & .Hyperlinks(I).Address)
endif

Для сетевых ссылок — нужны примеры, не сталкивался до сего дня.



1



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

18.01.2018, 23:09

7

Надо бы учесть еще две вещи:
1. Относительные ссылки могут иметь вид ….папкафайл.txt — надо удалять .. и соотв. кол-во подпапок в базовом пути;
2. У книги есть свойство «База гиперссылки» — activeworkbook.BuiltinDocumentProperties(«hyperlin k base»)
Если там не пустая строка, то базовый путь берется из этого свойства, а не из пути к книге.



1



0 / 0 / 0

Регистрация: 08.11.2016

Сообщений: 11

20.01.2018, 22:04

 [ТС]

8

Всем спасибо!



0



Homophobic

0 / 0 / 0

Регистрация: 08.11.2016

Сообщений: 11

03.02.2018, 23:59

 [ТС]

9

Я себе голову сломал.

Отсечь подъемы на уровень, выше через одно место, можно

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Sub zvezdinax()
Dim doroga
' в ячейке 2, 4 допустим "....папкафайл.txt"
doroga = Cells(2, 4)
n = 0
If doroga Like "..*" Then
a = Split(doroga, "", 2)
n = n + 1
    If a(1) Like "..*" Then
    a = Split(a(1), "", 2)
    n = n + 1
        If a(1) Like "..*" Then
        a = Split(a(1), "", 2)
        n = n + 1
            If a(1) Like "..*" Then
            a = Split(a(1), "", 2)
            n = n + 1
                If a(1) Like "..*" Then
                a = Split(a(1), "", 2)
                n = n + 1
'ну и так до 255 или сколько там в винде ограничение на длину пути
                End If
            End If
        End If
    End If
End If
MsgBox n
a = Split(doroga, "", n + 1)
doroga = a(n)
End Sub

в итоге имеем количество «..» и адрес без «..».
А вот как отсечь нужное кол-во подпапок в базовом пути?



0



Остап Бонд

Заблокирован

04.02.2018, 01:00

10

Homophobic, что такое

Цитата
Сообщение от Homophobic
Посмотреть сообщение

нужное кол-во подпапок в базовом пути?

Какой нужен результат?



0



Homophobic

0 / 0 / 0

Регистрация: 08.11.2016

Сообщений: 11

04.02.2018, 15:53

 [ТС]

11

Результат нужен следующий:
Удалить конструкции «..» из гиперссылки и удалить соответствующее количество подпапок из пути к файлу Excel, а потом объединить их и получить адрес вида C:папкафайл.txt.
Понял как сделать.
В предыдущем коде определил количество «..» и отбросил их.
Теперь делю путь к файлу Excel командой «split», при помощи команды «UBound()» узнаю количество подпапок, отбрасываю n подпапок (из предыдущего кода) и объединяю получившийся путь с адресом гиперссылки без «..».
Но выяснился один нюанс (чего я раньше то не проверил).
Код

Visual Basic
1
 Set File = FSO.GetFile(ThisWorkbook.Path & "" & .Hyperlinks(I).Address)

тоже отлично работает ибо адрес вида «C:папкапапка..файл.txt» Excel воспринимает как «C:папкафайл.txt»



0



Homophobic

0 / 0 / 0

Регистрация: 08.11.2016

Сообщений: 11

04.02.2018, 22:32

 [ТС]

12

Другой вопрос.
Как гиперссылки не подряд перебирать, а обратиться к определённой ячейке и если в ней есть гиперссылка, то тогда вывести требуемую инфу?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub load_file()
Set FSO = CreateObject("Scripting.FileSystemObject")
With ActiveSheet
  For I = 1 To .Hyperlinks.Count
    Set File = FSO.GetFile(.Hyperlinks(i).Address)
    Else
    Set File = FSO.GetFile(ThisWorkbook.Path & "" & .Hyperlinks(i).Address)
    .Hyperlinks(I).Range.Offset(0, 1).Value = File.Name
    .Hyperlinks(I).Range.Offset(0, 2).Value = File.DateLastModified
    .Hyperlinks(I).Range.Offset(0, 3).Value = File.Size
  Next I
End With
End Sub

с синтаксисом совсем не дружу к сожалению.

Есть именованные диапазоны (nazv, date, razm) в виде столбцов.
Следующий код корректно работает в том случае, если гиперссылки идут с первой строки в столбик друг за другом без промежутков.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub load_file2()
Set FSO = CreateObject("Scripting.FileSystemObject")
With ActiveSheet
  For i = 1 To .Hyperlinks.Count
If .Hyperlinks(i).Address Like "?:*" Then
Set File = FSO.GetFile(.Hyperlinks(i).Address)
Else
Set File = FSO.GetFile(ThisWorkbook.Path & "" & .Hyperlinks(i).Address)
'MsgBox ThisWorkbook.Path & "" & .Hyperlinks(i).Address
 
End If
    Range("nazv").Cells(i) = File.Name
    Range("data").Cells(i) = File.DateLastModified
    Range("razm").Cells(i) = File.Size
  Next i
End With
End Sub

Как гиперссылки поячейно перебирать?

Вложения

Тип файла: rar пример2.rar (15.4 Кб, 9 просмотров)



0



Homophobic

0 / 0 / 0

Регистрация: 08.11.2016

Сообщений: 11

06.02.2018, 00:39

 [ТС]

13

Нашёл способ. Получилось следующее

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub load_file2()
Set FSO = CreateObject("Scripting.FileSystemObject")
With ActiveSheet
  For i = 1 To .Hyperlinks.Count
If .Hyperlinks(i).Address Like "?:*" Then
Set File = FSO.GetFile(.Hyperlinks(i).Address)
Else
Set File = FSO.GetFile(ThisWorkbook.Path & "" & .Hyperlinks(i).Address)
End If
    .Hyperlinks(i).Range.Select
    Range("nazv").Cells(Selection.Row) = File.Name
    Range("data").Cells(Selection.Row) = File.DateLastModified
    Range("razm").Cells(Selection.Row) = File.Size
  Next i
End With
End Sub



0



Содержание

  1. Объект FileSystemObject
  2. 1. Создание объекта
  3. 2. Свойства
  4. 2.1. Drives
  5. 3. Методы
  6. 3.1. CreateFolder
  7. 3.2. CopyFile
  8. 3.3. CopyFolder
  9. 3.4. MoveFile
  10. 3.5. MoveFolder
  11. 3.6. DeleteFile
  12. 3.7. DeleteFolder
  13. 3.8. BuildPath
  14. 3.9. GetAbsolutePathName
  15. 3.10. GetBaseName
  16. 3.11. GetExtensionName
  17. 3.12. GetFileName
  18. 3.13. GetParentFolderName
  19. 3.14. GetDriveName
  20. 3.15. DriveExists
  21. 3.16. FileExists
  22. 3.17. FolderExists
  23. 3.18. GetDrive
  24. 3.19. GetFile
  25. 3.20. GetFolder
  26. 3.21. GetSpecialFolder
  27. 3.22. GetTempName
  28. 3.23. CreateTextFile
  29. 3.24. OpenTextFile
  30. 3.25. GetStandardStream
  31. 3.26. GetFileVersion
  32. 4. Объект Drive
  33. 4.1. Создание объекта
  34. 4.2. Свойства
  35. 4.2.1. AvailableSpace
  36. 4.2.2. DriveLetter
  37. 4.2.3. DriveType
  38. 4.2.4. FileSystem
  39. 4.2.5. FreeSpace
  40. 4.2.6. IsReady
  41. 4.2.7. Path
  42. 4.2.8. RootFolder
  43. 4.2.9. SerialNumber
  44. 4.2.10. ShareName
  45. 4.2.11. TotalSize
  46. 4.2.12. VolumeName
  47. 5. Объект File
  48. 5.1. Создание объекта
  49. 5.2. Свойства
  50. 5.2.1. Attributes
  51. 5.2.2. DateCreated
  52. 5.2.3. DateLastAccessed
  53. 5.2.4. DateLastModified
  54. 5.2.5. Drive
  55. 5.2.6. Name
  56. 5.2.7. ParentFolder
  57. 5.2.8. Path
  58. 5.2.9. ShortName
  59. 5.2.10. ShortPath
  60. 5.2.11. Size
  61. 5.2.12. Type
  62. 5.3. Методы
  63. 5.3.1. Copy
  64. 5.3.2. Move
  65. 5.3.3. Delete
  66. 5.3.4. OpenAsTextStream
  67. 6. Объект Folder
  68. 6.1. Создание объекта
  69. 6.2. Свойства
  70. 6.2.1. Attributes
  71. 6.2.2. DateCreated
  72. 6.2.3. DateLastAccessed
  73. 6.2.4. DateLastModified
  74. 6.2.5. Drive
  75. 6.2.6. IsRootFolder
  76. 6.2.7. Name
  77. 6.2.8. ParentFolder
  78. 6.2.9. Path
  79. 6.2.10. ShortName
  80. 6.2.11. ShortPath
  81. 6.2.12. Size
  82. 6.2.13. Type
  83. 6.2.14. SubFolders
  84. 6.2.15. Files
  85. 6.3. Методы
  86. 6.3.1. Copy
  87. 6.3.2. Move
  88. 6.3.3. Delete
  89. 6.3.4. CreateTextFile
  90. 7. Объект TextStream
  91. 7.1. Создание объекта
  92. 7.2. Свойства
  93. 7.2.1. AtEndOfLine
  94. 7.2.2. AtEndOfStream
  95. 7.2.3. Column
  96. 7.2.4. Line
  97. 7.3. Методы
  98. 7.3.1. Close
  99. 7.3.2. Read
  100. 7.3.3. ReadAll
  101. 7.3.4. ReadLine
  102. 7.3.5. Skip
  103. 7.3.6. SkipLine
  104. 7.3.7. Write
  105. 7.3.8. WriteLine
  106. 7.3.9. WriteBlankLines

Объект FileSystemObject

Ниже приведен справочник по объекту FileSystemObject, который умеет работать с файлами, каталогами, файловыми потоками. Данный объект позволяет читать файлы, писать в файлы, получать информацию о файлах и др. Данный объект используется в ОС Windows, в некоторых скриптовых языках.

1. Создание объекта
2. Свойства
    2.1. Drives
3. Методы
    3.1. CreateFolder
    3.2. CopyFile
    3.3. CopyFolder
    3.4. MoveFile
    3.5. MoveFolder
    3.6. DeleteFile
    3.7. DeleteFolder
    3.8. BuildPath
    3.9. GetAbsolutePathName
    3.10. GetBaseName
    3.11. GetExtensionName
    3.12. GetFileName
    3.13. GetParentFolderName
    3.14. GetDriveName
    3.15. DriveExists
    3.16. FileExists
    3.17. FolderExists
    3.18. GetDrive
    3.19. GetFile
    3.20. GetFolder
    3.21. GetSpecialFolder
    3.22. GetTempName
    3.23. CreateTextFile
    3.24. OpenTextFile
    3.25. GetStandardStream
    3.26. GetFileVersion
4. Объект Drive
    4.1. Создание объекта
    4.2. Свойства
        4.2.1. AvailableSpace
        4.2.2. DriveLetter
        4.2.3. DriveType
        4.2.4. FileSystem
        4.2.5. FreeSpace
        4.2.6. IsReady
        4.2.7. Path
        4.2.8. RootFolder
        4.2.9. SerialNumber
        4.2.10. ShareName
        4.2.11. TotalSize
        4.2.12. VolumeName
5. Объект File
    5.1. Создание объекта
    5.2. Свойства
        5.2.1. Attributes
        5.2.2. DateCreated
        5.2.3. DateLastAccessed
        5.2.4. DateLastModified
        5.2.5. Drive
        5.2.6. Name
        5.2.7. ParentFolder
        5.2.8. Path
        5.2.9. ShortName
        5.2.10. ShortPath
        5.2.11. Size
        5.2.12. Type
    5.3. Методы
        5.3.1. Copy
        5.3.2. Move
        5.3.3. Delete
        5.3.4. OpenAsTextStream
6. Объект Folder
    6.1. Создание объекта
    6.2. Свойства
        6.2.1. Attributes
        6.2.2. DateCreated
        6.2.3. DateLastAccessed
        6.2.4. DateLastModified
        6.2.5. Drive
        6.2.6. IsRootFolder
        6.2.7. Name
        6.2.8. ParentFolder
        6.2.9. Path
        6.2.10. ShortName
        6.2.11. ShortPath
        6.2.12. Size
        6.2.13. Type
        6.2.14. SubFolders
        6.2.15. Files
    6.3. Методы
        6.3.1. Copy
        6.3.2. Move
        6.3.3. Delete
        6.3.4. CreateTextFile
7. Объект TextStream
    7.1. Создание объекта
    7.2. Свойства
        7.2.1. AtEndOfLine
        7.2.2. AtEndOfStream
        7.2.3. Column
        7.2.4. Line
    7.3. Методы
        7.3.1. Close
        7.3.2. Read
        7.3.3. ReadAll
        7.3.4. ReadLine
        7.3.5. Skip
        7.3.6. SkipLine
        7.3.7. Write
        7.3.8. WriteLine
        7.3.9. WriteBlankLines

1. Создание объекта

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")

2. Свойства

2.1. Drives

Синтаксис:

Drives

Возвращаемое значение: объект-коллекция «Drives».

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
For Each Drive In FSO.Drives
    MsgBox Drive.DriveLetter
Next

Другой пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Drives = FSO.Drives
MsgBox "Всего дисков - " & Drives.Count
Set DriveC = Drives.Item("C:")
MsgBox "Диск C: имеет метку " & DriveC.VolumeName

3. Методы

3.1. CreateFolder

Синтаксис:

CreateFolder(<Foldername>)

Назначение: создаёт каталог с указанным именем.

Параметры:

  • <Foldername> — строка, путь к каталогу. Если такой каталог уже существует, произойдёт ошибка.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CreateFolder "C:New Folder"

3.2. CopyFile

Синтаксис:

CopyFile(<Source>,<Destination>,<Overwrite>)

Назначение: копирует один или несколько файлов.

Параметры:

  • <Source> — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • <Destination> — строка, путь назначения (куда копировать).
  • <Overwrite> — необязательный, булево (число). Перезаписывать существующие файлы, или нет. По умолчанию — True (перезаписывать). Если файл, который нужно перезаписать, имеет атрибут read-only, возникнет ошибка (независимо от установки этого параметра).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFile "C:*.bat", "A:", 0

3.3. CopyFolder

Синтаксис:

CopyFolder(<Source>,<Destination>,<Overwrite>)

Назначение: рекурсивно копирует каталог.

Параметры:

  • <Source> — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • <Destination> — строка, путь назначения (куда копировать).
  • <Overwrite> — необязательный, булево (число). Перезаписывать существующие файлы, или нет. По умолчанию — True (перезаписывать). Если файл, который нужно перезаписать, имеет атрибут read-only, возникнет ошибка (независимо от установки этого параметра).

Описание: процесс копирования прерывается после первой возникшей ошибки.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFolder "C:NewFolder*", "C:TEMP", 0

3.4. MoveFile

Синтаксис:

MoveFile(<Source>,<Destination>)

Назначение: перемещает один или несколько файлов.

Параметры:

  • <Source> — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • <Destination> — строка, путь назначения (куда копировать).

Описание: процесс перемещения прерывается после первой возникшей ошибки. Если перемещаемый файл уже существует или является папкой в Destination, возникнет ошибка.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.MoveFile "C:*.txt", "A:"

3.5. MoveFolder

Синтаксис:

MoveFolder(<Source>,<Destination>)

Назначение: рекурсивно перемещает один или несколько каталогов.

Параметры:

  • <Source> — строка, путь к источнику копирования (что копировать). В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • <Destination> — строка, путь назначения (куда копировать).

Описание: процесс перемещения прерывается после первой возникшей ошибки. Если перемещаемый каталог уже существует или является файлом в Destination, возникнет ошибка.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.MoveFolder "C:New Folde*", "C:TEMP"

3.6. DeleteFile

Синтаксис:

DeleteFile(<Filespec>,<Force>)

Назначение: удаляет указанный файл.

Параметры:

  • <Filespec> — строка, путь к файлу. В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • <Force> — необязательный, булево (число). Определяет, удалять или нет файлы с атрибутом read-only. По умолчанию — False (не удалять).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.DeleteFile "A:*", 0

3.7. DeleteFolder

Синтаксис:

DeleteFolder(<Folderspec>,<Force>)

Назначение: удаляет указанную папку.

Параметры:

  • <Folderspec> — строка, путь к папке. В последнем компоненте параметра можно использовать групповые символы «*» и «?».
  • <Force> — необязательный, булево (число). Определяет, удалять или нет файлы с атрибутом read-only. По умолчанию — False (не удалять).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.DeleteFolder "A:*", 0

3.8. BuildPath

Синтаксис:

BuildPath(<Path>,<Name>)

Назначение: добавляет к заданному пути новое имя. Если необходимо, вставляется «».

Параметры:

  • <Path> — строка, путь.
  • <Name> — строка, имя файла.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Path = FSO.BuildPath("C:Program Files", "New Folder")
MsgBox Path
Path = FSO.BuildPath("C:Program Files", "New Folder")
MsgBox Path

3.9. GetAbsolutePathName

Синтаксис:

GetAbsolutePathName(<Pathspec>)

Назначение: возвращает полный путь для заданного относительного пути (из текущего каталога).

Параметры:

  • <Pathspec> — строка, относительный путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Path = FSO.GetAbsolutePathName("..")
MsgBox Path
Path = FSO.GetAbsolutePathName(".aaabbbccc.txt")
MsgBox Path

3.10. GetBaseName

Синтаксис:

GetBaseName(<Path>)

Назначение: возвращает имя (без расширения) последнего компонента в заданном пути.

Параметры:

  • <Path> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Name = FSO.GetBaseName("Q:aaabredMySuperFile.txt")
MsgBox Name

3.11. GetExtensionName

Синтаксис:

GetExtensionName(<Path>)

Назначение: возвращает расширение последнего компонента в заданном пути.

Параметры:

  • <Path> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Name = FSO.GetExtensionName("Q:aaabredMySuperFile.txt")
MsgBox Name

3.12. GetFileName

Синтаксис:

GetFileName(<Path>)

Назначение: возвращает имя (с расширением) последнего компонента в заданном пути.

Параметры:

  • <Path> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Name = FSO.GetFileName("Q:aaabredMySuperFile.txt")
MsgBox Name

3.13. GetParentFolderName

Синтаксис:

GetParentFolderName(<Path>)

Назначение: возвращает путь к последнему компоненту в заданном пути (его каталог).

Параметры:

  • <Path> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Name = FSO.GetParentFolderName("Q:aaabredMySuperFile.txt")
MsgBox Name

3.14. GetDriveName

Синтаксис:

GetDriveName(<Path>)

Назначение: возвращает имя диска в заданном пути.

Параметры:

  • <Path> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Name = FSO.GetDriveName("X:aaabredMySuperFile.txt")
MsgBox Name

3.15. DriveExists

Синтаксис:

DriveExists(<Drivespec>)

Назначение: возвращает True, если указанный диск сущесвтвует, и False в противном случае.

Параметры:

  • <Drivespec> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Disk = "A:"
MsgBox "Диск " & Disk & " существует = " & FSO.DriveExists(Disk)
Disk = "Q:"
MsgBox "Диск " & Disk & " существует = " & FSO.DriveExists(Disk)

3.16. FileExists

Синтаксис:

FileExists(<Filespec>)

Назначение: возвращает True, если указанный файл сущесвтвует, и False в противном случае.

Параметры:

  • <Filespec> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
File = "C:Program Files1Cv77BIN1cv7s.exe"
MsgBox "Файл " & File & " существует = " & FSO.FileExists(File)
File = "С:1.txt"
MsgBox "Файл " & File & " существует = " & FSO.FileExists(File)

3.17. FolderExists

Синтаксис:

FolderExists(<Folderspec>)

Назначение: возвращает True, если указанный каталог сущесвтвует, и False в противном случае.

Параметры:

  • <Folderspec> — строка, путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Folder = "C:Program Files"
MsgBox "Каталог " & Folder & " существует = " & FSO.FolderExists(Folder)
Folder = "С:ProgramFiles"
MsgBox "Каталог " & Folder & " существует = " & FSO.FolderExists(Folder)

3.18. GetDrive

Синтаксис:

GetDrive(<Folderspec>)

Назначение: возвращает объект «Drive» по указанному имени или пути.

Параметры:

  • <Folderspec> — строка, имя диска или путь к корневому каталогу диска, возможно UNC-путь.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Drive = FSO.GetDrive("C:")
MsgBox Drive.FileSystem
Set Drive = FSO.GetDrive("C:")
MsgBox Drive.FileSystem
Set Drive = FSO.GetDrive("\Server1C_Predpr")
MsgBox Drive.FileSystem

3.19. GetFile

Синтаксис:

GetFile(<Filespec>)

Назначение: возвращает объект «File» по указанному пути.

Параметры:

  • <Filespec> — строка, путь.

Описание: если файл не существует, произойдёт ошибка.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
MsgBox File.Size

3.20. GetFolder

Синтаксис:

GetFolder(<Folderspec>)

Назначение: возвращает объект «Folder» по указанному пути.

Параметры:

  • <Folderspec> — строка, путь.

Описание: если каталог не существует, произойдёт ошибка.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
MsgBox Folder.ShortName

3.21. GetSpecialFolder

Синтаксис:

GetSpecialFolder(<Folderspec>)

Назначение: возвращает объект «Folder» для некоторых специальных папок Windows.

Параметры:

  • <Folderspec> — число, определяет специальную папку. Возможные значения:
    • 0 — Каталог Windows.
    • 1 — Системный каталог библиотек и драйверов.
    • 2 — Каталог временных файлов, путь к которому хранится в переменной среды «TMP».

Описание: если каталог не существует, произойдёт ошибка.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
For i=0 To 2
    Set Folder = FSO.GetSpecialFolder(i)
    MsgBox Folder.Path
Next

3.22. GetTempName

Синтаксис:

GetTempName()

Назначение: возвращает случайным образом сгенерированное имя файла, которое может быть использовано для создания временного файла.

Параметры: нет.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
MsgBox FSO.GetTempName()

3.23. CreateTextFile

Синтаксис:

CreateTextFile(<Filename>,<Overwrite>,<Unicode>)

Назначение: создаёт новый текстовый файл и возвращает объект «TextStream», указывающий на него.

Параметры:

  • <Filename> — строка, путь к файлу.
  • <Overwrite> — необязательный, булево (число). Перезаписывать файл, если он существует (True), или нет (False). По умолчанию — False. Если указано False и файл существует — произойдёт ошибка.
  • <Unicode> — необязательный, булево (число). Файл в формате Unicode (True), или ASCII (False). По умолчанию — False.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.CreateTextFile("C:Test.txt")

3.24. OpenTextFile

Синтаксис:

OpenTextFile(<Filename>,<Iomode>,<Create>,<Format>)

Назначение: открывает текстовый файл и возвращает объект «TextStream», указывающий на него.

Параметры:

  • <Filename> — строка, путь к файлу.
  • <Iomode> — необязательный, число. Возможные значения:
    • 1 — Открыть файл только для чтения.
    • 2 — Открыть файл для записи. Если файл уже существовал, его содержимое теряется.
    • 8 — Открыть файл для добавления. Если файл уже существовал, информация будет дописываться в конец файла.
  • <Create> — необязательный, булево (число). Создавать файл, если он не существует (True), или нет (False). По умолчанию — False.
  • <Format> — необязательный, число. Возможные значения:
    • -2 — Открыть файл в формате, используемом системой по умолчанию.
    • -1 — Открыть файл в формате Unicode.
    • 0 — Открыть файл в формате ASCII (по умолчанию).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.OpenTextFile("C:Test.txt", 2, True)

3.25. GetStandardStream

Синтаксис:

GetStandardStream(<StandardStreamType>,<Unicode>)

Назначение: возвращает объект «TextStream», ассоциированный с потоком «StdIn», «StdOut» или «StdErr».

Параметры:

  • <StandardStreamType> — число, определяет поток. Возможные значения:
    • 0 — StdIn.
    • 1 — StdOut.
    • 2 — StdErr.
  • <Unicode> — необязательный, булево (число). True — формат Unicode, False — ASCII. По умолчанию — False.

Описание: метод применим при запуске административного скрипта в консоли с помощью CScript.exe.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set stdout = fso.GetStandardStream(1)
stdout.WriteLine "Hello, VBScript."

3.26. GetFileVersion

Синтаксис:

GetFileVersion(<Path>)

Назначение: возвращает номер версии исполняемого файла (строка).

Параметры:

  • <Path> — строка, путь к файлу.

Описание: метод возвращает информацию, которую можно просмотреть на вкладке «Версия» палитры свойств файла в проводнике.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
MsgBox FSO.GetFileVersion("C:Program Files1Cv77BIN1cv7s.exe")
MsgBox FSO.GetFileVersion("C:Program Files1cv8bin1cv8.exe")

4. Объект Drive

4.1. Создание объекта

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.Drives.Item("C:")

4.2. Свойства

4.2.1. AvailableSpace

Синтаксис:

AvailableSpace

Возвращаемое значение: число — количество доступного для пользователя места на диске в байтах.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.2. DriveLetter

Синтаксис:

DriveLetter

Возвращаемое значение: строка — буква, ассоциированная с ресурсом.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.3. DriveType

Синтаксис:

DriveType

Возвращаемое значение: число — определяет тип ресурса. Возможные значения:

  • 0 — неизвестное устройство.
  • 1 — устройство со сменным носителем.
  • 2 — жёсткий диск.
  • 3 — сетевой диск.
  • 4 — CD-ROM.
  • 5 — RAM-диск.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.4. FileSystem

Синтаксис:

FileSystem

Возвращаемое значение: cтрока — тип файловой системы (FAT, NTFS или CDFS).

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.5. FreeSpace

Синтаксис:

FreeSpace

Возвращаемое значение: число — количество свободного места на диске в байтах.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.6. IsReady

Синтаксис:

IsReady

Возвращаемое значение: булево (число) — True, если устройство готово, иначе — False. Актуально для устройства со сменным носителем или CD-ROM.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.7. Path

Синтаксис:

Path

Возвращаемое значение: строка — путь к диску (например, «C:», но не «C:»).

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.8. RootFolder

Синтаксис:

RootFolder

Возвращаемое значение: объект «Folder», соответствующий корневому каталогу диска.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.9. SerialNumber

Синтаксис:

SerialNumber

Возвращаемое значение: число — десятичный серийный номер диска.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

Синтаксис:

ShareName

Возвращаемое значение: строка — сетевое имя диска, если диск сетевой (иначе — пустая строка).

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.11. TotalSize

Синтаксис:

TotalSize

Возвращаемое значение: число — общий объём диска в байтах.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

4.2.12. VolumeName

Синтаксис:

VolumeName

Возвращаемое значение: строка — метка тома диска.

Замечание: чтение и запись.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str

5. Объект File

5.1. Создание объекта

Пример №1:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")

Пример №2:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
Set File = Folder.Files("autoexec.bat")

Пример №3:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
Set File = Folder.Files.Item("autoexec.bat")

5.2. Свойства

5.2.1. Attributes

Синтаксис:

Attributes

Возвращаемое значение: число, набор флагов атрибутов файла. Флаги:

  • 0 — Normal. Обычный файл (нет атрибутов).
  • 1 — ReadOnly. Файл только для чтения. Чтение и запись.
  • 2 — Hidden. Скрытый. Чтение и запись.
  • 4 — System. Системный. Чтение и запись.
  • 8 — Volume. Диск. Только чтение.
  • 16 — Directory. Папка или файл. Только чтение.
  • 32 — Archive. Архивный. Чтение и запись.
  • 1024 — Alias. Ссылка или ярлык. Только чтение.
  • 2048 — Compressed. Сжатый. Только чтение.

Замечание: чтение и запись или только чтение, в зависимости от атрибута.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Attrs = File.Attributes
Set Dict = CreateObject("Scripting.Dictionary")
Dict.Add "ReadOnly", 0
Dict.Add "Hidden", 0
Dict.Add "System", 0
Dict.Add "Volume", 0
Dict.Add "Directory", 0
Dict.Add "Archive", 0
Dict.Add "Alias", 0
Dict.Add "Compressed", 0
If Attrs And 2048 Then
    Dict.Item("Compressed") = 1
End If
If Attrs And 1024 Then
    Dict.Item("Alias") = 1
End If
If Attrs And 32 Then
    Dict.Item("Archive") = 1
End If
If Attrs And 16 Then
    Dict.Item("Directory") = 1
End If
If Attrs And 8 Then
    Dict.Item("Volume") = 1
End If
If Attrs And 4 Then
    Dict.Item("System") = 1
End If
If Attrs And 2 Then
    Dict.Item("Hidden") = 1
End If
If Attrs And 1 Then
    Dict.Item("ReadOnly") = 1
End If
Str = "Атрибуты файла """ & File.Path & """:" & vbCrLf
For Each Attr In Dict
    Str = Str & Attr & " = " & Dict.Item(Attr) & vbCrLf
Next
MsgBox Str

5.2.2. DateCreated

Синтаксис:

DateCreated

Возвращаемое значение: дата создания файла.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.3. DateLastAccessed

Синтаксис:

DateLastAccessed

Возвращаемое значение: дата последнего доступа к файлу.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.4. DateLastModified

Синтаксис:

DateLastModified

Возвращаемое значение: дата последней модификации файла.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.5. Drive

Синтаксис:

Drive

Возвращаемое значение: объект «Drive» диска, на котором находится файл.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.6. Name

Синтаксис:

Name

Возвращаемое значение: имя файла.

Замечание: чтение и запись.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.7. ParentFolder

Синтаксис:

ParentFolder

Возвращаемое значение: объект «Folder» родительского каталога.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.8. Path

Синтаксис:

Path

Возвращаемое значение: полный путь к файлу.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.9. ShortName

Синтаксис:

ShortName

Возвращаемое значение: короткое имя файла в формате 8.3.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.10. ShortPath

Синтаксис:

ShortPath

Возвращаемое значение: короткий путь к файлу в формате 8.3.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.11. Size

Синтаксис:

Size

Возвращаемое значение: размер файла в байтах.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.2.12. Type

Синтаксис:

Type

Возвращаемое значение: тип файла. Информация, похожая на ту, которую можно увидеть в палитре свойств файла в проводнике.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Str = vbNullString
Str = Str & "Дата создания - " & File.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & File.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & File.DateLastModified & vbCrLf
Str = Str & "Диск - " & File.Drive.DriveLetter & vbCrLf
Str = Str & "Имя - " & File.Name & vbCrLf
Str = Str & "Родительский каталог - " & File.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & File.Path & vbCrLf
Str = Str & "Короткое имя - " & File.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & File.ShortPath & vbCrLf
Str = Str & "Размер - " & File.Size & vbCrLf
Str = Str & "Тип файла - " & File.Type
MsgBox Str

5.3. Методы

5.3.1. Copy

Синтаксис:

Copy(<Destination>,<Overwrite>)

Назначение: копирует файл в указанное место.

Параметры:

  • <Destination> — строка, путь (куда копировать).
  • <Overwrite> — необязательный, булево (число). Заменять файл, если он существует (True), или нет (False)

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
File.Copy "D:"
File.Copy "D:Copy of autoexec.bat"

5.3.2. Move

Синтаксис:

Move(<Destination>)

Назначение: перемещает файл в указанное место.

Параметры:

  • <Destination> — строка, путь (куда перемещать).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
File.Move "D:"
'File.Move "D:Copy of autoexec.bat"

5.3.3. Delete

Синтаксис:

Delete(<Force>)

Назначение: удаляет файл.

Параметры:

  • <Force> — необязательный, булево (число). Удалять файл, если он имеет атрибут «только для чтения» (True), или нет (False).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:Test.txt")
File.Delete

5.3.4. OpenAsTextStream

Синтаксис:

OpenAsTextStream(<Iomode>,<Format>)

Назначение: открывает текстовый файл и возвращает объект «TextStream», указывающий на него.

Параметры:

  • <Iomode> — необязательный, число. Возможные значения:
    • 1 — Открыть файл только для чтения.
    • 2 — Открыть файл для записи. Если файл уже существовал, его содержимое теряется.
    • 8 — Открыть файл для добавления. Если файл уже существовал, информация будет дописываться в конец файла.
  • <Format> — необязательный, число. Возможные значения:
    • -2 — Открыть файл в формате, используемом системой по умолчанию.
    • -1 — Открыть файл в формате Unicode.
    • 0 — Открыть файл в формате ASCII (по умолчанию).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.ReadAll()
TextStream.Close

6. Объект Folder

6.1. Создание объекта

Пример №1:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")

Пример №2:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetSpecialFolder(0)

Пример №3:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set DriveC = FSO.GetDrive("C:")
Set Folder = DriveC.RootFolder

Пример №4:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
For Each SubFolder In Folder.SubFolders
    WScript.Echo SubFolder.Name
Next

6.2. Свойства

6.2.1. Attributes

Синтаксис:

Attributes

Возвращаемое значение: число, набор флагов атрибутов папки. Флаги:

  • 0 — Normal. Обычный файл (нет атрибутов).
  • 1 — ReadOnly. Файл только для чтения. Чтение и запись.
  • 2 — Hidden. Скрытый. Чтение и запись.
  • 4 — System. Системный. Чтение и запись.
  • 8 — Volume. Диск. Только чтение.
  • 16 — Directory. Папка или файл. Только чтение.
  • 32 — Archive. Архивный. Чтение и запись.
  • 1024 — Alias. Ссылка или ярлык. Только чтение.
  • 2048 — Compressed. Сжатый. Только чтение.

Замечание: чтение и запись или только чтение, в зависимости от атрибута.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Attrs = Folder.Attributes
Set Dict = CreateObject("Scripting.Dictionary")
Dict.Add "ReadOnly", 0
Dict.Add "Hidden", 0
Dict.Add "System", 0
Dict.Add "Volume", 0
Dict.Add "Directory", 0
Dict.Add "Archive", 0
Dict.Add "Alias", 0
Dict.Add "Compressed", 0
If Attrs And 2048 Then
    Dict.Item("Compressed") = 1
End If
If Attrs And 1024 Then
    Dict.Item("Alias") = 1
End If
If Attrs And 32 Then
    Dict.Item("Archive") = 1
End If
If Attrs And 16 Then
    Dict.Item("Directory") = 1
End If
If Attrs And 8 Then
    Dict.Item("Volume") = 1
End If
If Attrs And 4 Then
    Dict.Item("System") = 1
End If
If Attrs And 2 Then
    Dict.Item("Hidden") = 1
End If
If Attrs And 1 Then
    Dict.Item("ReadOnly") = 1
End If
Str = "Атрибуты папки """ & Folder.Path & """:" & vbCrLf
For Each Attr In Dict
    Str = Str & Attr & " = " & Dict.Item(Attr) & vbCrLf
Next
MsgBox Str

6.2.2. DateCreated

Синтаксис:

DateCreated

Возвращаемое значение: дата создания каталога.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.3. DateLastAccessed

Синтаксис:

DateLastAccessed

Возвращаемое значение: дата последнего доступа к каталогу.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.4. DateLastModified

Синтаксис:

DateLastModified

Возвращаемое значение: дата последней модификации каталога.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.5. Drive

Синтаксис:

Drive

Возвращаемое значение: объект «Drive» диска, на котором находится каталог.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.6. IsRootFolder

Синтаксис:

IsRootFolder

Возвращаемое значение: булево (число). Признак того, является ли каталог корневым.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.7. Name

Синтаксис:

Name

Возвращаемое значение: имя каталога.

Замечание: чтение и запись.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.8. ParentFolder

Синтаксис:

ParentFolder

Возвращаемое значение: объект «Folder» родительского каталога.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.9. Path

Синтаксис:

Path

Возвращаемое значение: полный путь к каталогу.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.10. ShortName

Синтаксис:

ShortName

Возвращаемое значение: короткое имя каталога в формате 8.3.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.11. ShortPath

Синтаксис:

ShortPath

Возвращаемое значение: короткий путь к каталогу в формате 8.3.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.12. Size

Синтаксис:

Size

Возвращаемое значение: размер всех файлов и подкаталогов, входящих в данный каталог, в байтах.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.13. Type

Синтаксис:

Type

Возвращаемое значение: тип каталога. Информация, похожая на ту, которую можно увидеть в палитре свойств каталога в проводнике.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
Str = vbNullString
Str = Str & "Дата создания - " & Folder.DateCreated & vbCrLf
Str = Str & "Дата последнего доступа - " & Folder.DateLastAccessed & vbCrLf
Str = Str & "Дата последней модификации - " & Folder.DateLastModified & vbCrLf
Str = Str & "Диск - " & Folder.Drive.DriveLetter & vbCrLf
Str = Str & "Это корневой каталог - " & Folder.IsRootFolder & vbCrLf
Str = Str & "Имя - " & Folder.Name & vbCrLf
Str = Str & "Родительский каталог - " & Folder.ParentFolder.Path & vbCrLf
Str = Str & "Путь - " & Folder.Path & vbCrLf
Str = Str & "Короткое имя - " & Folder.ShortName & vbCrLf
Str = Str & "Путь в формате 8.3 - " & Folder.ShortPath & vbCrLf
Str = Str & "Размер - " & Folder.Size & vbCrLf
Str = Str & "Тип каталога - " & Folder.Type & vbCrLf
MsgBox Str

6.2.14. SubFolders

Синтаксис:

SubFolders

Возвращаемое значение: объект-коллекция «Folders», содержащая все подкаталоги данного каталога, включая скрытые и системные.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
MsgBox Folder.SubFolders.Count
Set SubFolder = Folder.SubFolders.Item("Program Files")
MsgBox SubFolder.Path
Set SubFolder = Folder.SubFolders("Program Files")
MsgBox SubFolder.Path

Другой пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:Program Files")
For Each SubFolder In Folder.SubFolders
    WScript.Echo SubFolder.Name
Next

Создание нового подкаталога:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
Set NewFolder = Folder.SubFolders.Add("New Folder")

6.2.15. Files

Синтаксис:

Files

Возвращаемое значение: объект-коллекция «Files», содержащая все файлы данного каталога, включая скрытые и системные.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
MsgBox Folder.Files.Count
Set File = Folder.Files.Item("AUTOEXEC.BAT")
MsgBox File.Path
Set File = Folder.Files("AUTOEXEC.BAT")
MsgBox File.Path

Другой пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
For Each File In Folder.Files
    WScript.Echo File.Name
Next

6.3. Методы

6.3.1. Copy

Синтаксис:

Copy(<Destination>,<Overwrite>)

Назначение: копирует каталог в указанное место.

Параметры:

  • <Destination> — строка, путь (куда копировать).
  • <Overwrite> — необязательный, булево (число). Заменять каталог, если он существует (True), или нет (False).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("D:JobSite")
Folder.Copy "D:"

6.3.2. Move

Синтаксис:

Move(<Destination>)

Назначение: перемещает каталог в указанное место.

Параметры:

  • <Destination> — строка, путь (куда перемещать).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("D:JobSite")
Folder.Move "D:"

6.3.3. Delete

Синтаксис:

Delete(<Force>)

Назначение: удаляет каталог со всем содержимым.

Параметры:

  • <Force> — необязательный, булево (число). Удалять каталог, если он имеет атрибут «только для чтения» (True), или нет (False).

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:New Folder")
Folder.Delete

6.3.4. CreateTextFile

Синтаксис:

CreateTextFile(<Filename>,<Overwrite>,<Unicode>)

Назначение: создаёт новый текстовый файл и возвращает объект «TextStream», указывающий на него.

Параметры:

  • <Filename> — строка, имя файла.
  • <Overwrite> — необязательный, булево (число). Перезаписывать файл, если он существует (True), или нет (False). По умолчанию — False. Если указано False и файл существует — произойдёт ошибка.
  • <Unicode> — необязательный, булево (число). Файл в формате Unicode (True), или ASCII (False). По умолчанию — False.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
Set TextStream = Folder.CreateTextFile("Test.txt")

7. Объект TextStream

7.1. Создание объекта

Пример №1:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.CreateTextFile("C:Test.txt")

Пример №2:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set Folder = FSO.GetFolder("C:")
Set TextStream = Folder.CreateTextFile("Test.txt")

Пример №3:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.OpenTextFile("C:autoexec.bat")

Пример №4:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:autoexec.bat")
Set TextStream = File.OpenAsTextStream(1)

7.2. Свойства

7.2.1. AtEndOfLine

Синтаксис:

AtEndOfLine

Возвращаемое значение: содержит True, если указатель достиг конца строки и False в противном случае. Работает только если файл открыт для чтения.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
Str = vbNullString
While Not TextStream.AtEndOfLine
    Str = Str & TextStream.Read(1)
Wend
TextStream.Close
MsgBox Str

7.2.2. AtEndOfStream

Синтаксис:

AtEndOfStream

Возвращаемое значение: содержит True, если указатель достиг конца файла и False в противном случае. Работает только если файл открыт для чтения.

Замечание: только чтение.

Пример:

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
TextStream.Close
MsgBox Str

7.2.3. Column

Синтаксис:

Column

Возвращаемое значение: содержит номер колонки текущего символа файла.

Замечание: только чтение.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
Str = vbNullString
While Not TextStream.AtEndOfLine
    Str = Str & TextStream.Column & ": " & TextStream.Read(1) & vbCrLf
Wend
TextStream.Close
MsgBox Str

7.2.4. Line

Синтаксис:

Line

Возвращаемое значение: содержит номер текущей строки файла.

Замечание: только чтение.

Пример:

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.Line & ": " & TextStream.ReadLine() & vbCrLf
Wend
TextStream.Close
MsgBox Str

7.3. Методы

7.3.1. Close

Синтаксис:

Close

Назначение: закрывает открытый файл.

Параметры: нет.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.ReadAll()
TextStream.Close

7.3.2. Read

Синтаксис:

Read(<Characters>)

Назначение: считывает из файла указанное количество символов и возвращает полученную строку.

Параметры:

  • <Characters> — число, количество символов, которое нужно считать.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.Read(13)
TextStream.Close

7.3.3. ReadAll

Синтаксис:

ReadAll

Назначение: считывает весь файл и возвращает полученную строку.

Параметры: нет.

Описание: для больших файлов использование этого метода потребует больших ресурсов памяти.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.ReadAll()
TextStream.Close

7.3.4. ReadLine

Синтаксис:

ReadLine

Назначение: считывает строку из файла и возвращает полученную строку.

Параметры: нет.

Пример:

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

7.3.5. Skip

Синтаксис:

Skip(<Characters>)

Назначение: пропускает при чтении файла указанное количество символов.

Параметры:

  • <Characters> — число, количество символов, которые нужно пропустить.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.Read(13)
TextStream.Skip 10
MsgBox TextStream.Read(10)
TextStream.Close

7.3.6. SkipLine

Синтаксис:

SkipLine

Назначение: пропускает при чтении файла строку.

Параметры: нет.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.GetFile("C:boot.ini")
Set TextStream = File.OpenAsTextStream(1)
MsgBox TextStream.ReadLine()
TextStream.SkipLine
MsgBox TextStream.ReadLine()
TextStream.Close

7.3.7. Write

Синтаксис:

Write(<String>)

Назначение: записывает в файл указанную строку. Символы возврата каретки и новой строки в файл не записываются.

Параметры:

  • <String> — строка для записи в файл.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.CreateTextFile("C:Test.txt")
TextStream.Write("Text")
TextStream.Close

7.3.8. WriteLine

Синтаксис:

WriteLine(<String>)

Назначение: записывает в файл указанную строку. В файл записываются символы возврата каретки и новой строки.

Параметры:

  • <String> — необязательный, строка для записи в файл. Если опущен, в файл записывается пустая строка.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.CreateTextFile("C:Test.txt")
TextStream.WriteLine "Text"
TextStream.Close

7.3.9. WriteBlankLines

Синтаксис:

WriteBlankLines(<Lines>)

Назначение: записывает в файл указанное количество пустых строк (символы возврата каретки и новой строки).

Параметры:

  • <Lines> — число, количество пустых строк, которое надо записать.

Пример:

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TextStream = FSO.CreateTextFile("C:Test.txt")
TextStream.WriteBlankLines 5
TextStream.Close

Извлечь из свойств файла данные о авторе и пользователе

Sancho

Дата: Четверг, 21.09.2017, 15:20 |
Сообщение № 1

Группа: Проверенные

Ранг: Обитатель

Сообщений: 279


Репутация:

19

±

Замечаний:
0% ±


2007, 2010, 2013

Всем привет. Сетевое файловое хранилище забилось офисными документами практически до предела. Коллеги ни в какую не признают свое долевое участие в захламлении диска. Решил доработать готовое решение Alex_ST, http://www.excelworld.ru/forum/3-1894-1 , под себя, но столкнулся с тем, что ни как не найду какие же свойства FileSystemObject отвечают за данные о авторе и пользователе. Их вообще нет в vba? или это вообще не относится к FileSystemObject? Куда и где рыть, подскажите пожалуйста.

 

Ответить

_Boroda_

Дата: Четверг, 21.09.2017, 15:25 |
Сообщение № 2

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Sancho

Дата: Четверг, 21.09.2017, 23:07 |
Сообщение № 3

Группа: Проверенные

Ранг: Обитатель

Сообщений: 279


Репутация:

19

±

Замечаний:
0% ±


2007, 2010, 2013

_Boroda_, спасибо. в тестовом файле имя автора и последнего пользователя получилось добыть [vba]

Код

Sub x1()
With ActiveSheet

.Cells(3, 3).Value = ThisWorkbook.BuiltinDocumentProperties(3).Value
.Cells(4, 3).Value = ThisWorkbook.BuiltinDocumentProperties(7).Value

End With
end sub

[/vba]

но вот допилить код Alex_ST у меня не получается совсем. строку в его файле [vba]

Код

If .Name Like «*» & Mask & «*» Then oDict.Item(oDict.Count + 1) = Array(oDict.Count + 1, .Name, .Path, .DateCreated, .Size, .DateLastModified)

[/vba] переписываю [vba]

Код

If .Name Like «*» & Mask & «*» Then oDict.Item(oDict.Count + 1) = Array(oDict.Count + 1, .Name, .Path, .DateCreated, .Size, .DateLastModified, oFile.BuiltinDocumentProperties(3).Value)

[/vba] итоге получаю сообщение файлов не найдено…

 

Ответить

Sancho

Дата: Пятница, 22.09.2017, 10:41 |
Сообщение № 4

Группа: Проверенные

Ранг: Обитатель

Сообщений: 279


Репутация:

19

±

Замечаний:
0% ±


2007, 2010, 2013

подскажите пожалуйста, что не так.

 

Ответить

_Boroda_

Дата: Пятница, 22.09.2017, 10:57 |
Сообщение № 5

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS


В каком файле? Где он? Вы б положили сюда файл с макросом для поиграться, а то не совсем ясно что нужно и где


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

Sancho

Дата: Пятница, 22.09.2017, 12:13 |
Сообщение № 6

Группа: Проверенные

Ранг: Обитатель

Сообщений: 279


Репутация:

19

±

Замечаний:
0% ±


2007, 2010, 2013

_Boroda_, файл приложил, там где я что то добавил установлен комментарий ‘sancho. попробовал через отладчик отследить что все таки тянет добавив переменную [vba]

Код

p = oFile.BuiltinDocumentProperties(3).Value ‘sancho

[/vba] , результат ничего не тянет =Empty. я уже в отчаянии, сутки уже убил на поиски решения.

причем в тестовом файле код[vba]

Код

Sub x1()
Dim xx As Object
Set xx = GetObject(«D:Документ Microsoft Word.docx»)

ActiveSheet.Range(«C1») = xx.BuiltinDocumentProperties(3).Value
ActiveSheet.Range(«C2») = xx.BuiltinDocumentProperties(7).Value

End Sub

[/vba] отрабатывает нормально

Сообщение отредактировал SanchoПятница, 22.09.2017, 12:25

 

Ответить

Sancho

Дата: Понедельник, 25.09.2017, 07:53 |
Сообщение № 7

Группа: Проверенные

Ранг: Обитатель

Сообщений: 279


Репутация:

19

±

Замечаний:
0% ±


2007, 2010, 2013

Добавил в строку GetObject(oFile) [vba]

Код

If .Name Like «*» & Mask & «*» Then oDict.Item(oDict.Count + 1) = Array(oDict.Count + 1, .Name, .Path, .DateCreated, .Size, .DateLastModified, GetObject(oFile).BuiltinDocumentProperties(3), GetObject(oFile).BuiltinDocumentProperties(7))

[/vba]
Сведения об авторе и пользователе стало выдавать, но почему то остаются открытыми vba проекты перебранных файлов excel, сами книги не видны ни в excel ни в диспетчере задач, ну и в случае если читаемый файл не MS office, нет таких свойств автор и последний автор, то он вообще в список не попадает.

Совсем никаких идей? Странно.(

 

Ответить

KuklP

Дата: Понедельник, 25.09.2017, 09:39 |
Сообщение № 8

Группа: Проверенные

Ранг: Старожил

Сообщений: 2369


Репутация:

486

±

Замечаний:
0% ±


2003-2010

почему то остаются открытыми vba проекты перебранных файлов excel, сами книги не видны ни в excel ни в диспетчере задач

А почему по-Вашему они не должны оставаться открытыми? С помощью GetObject Вы их открываете или подчиняете своему процессу, причем в невидимом состоянии, так задумано. Ну и совсем уж странно Ваше недоумение

в случае если читаемый файл не MS office, нет таких свойств автор и последний автор

Мелкософт посчитал нужным добавить такие свойства(BuiltinDocumentProperties) в свои документы, а другие создатели — нет. Ну уж простите их негодяев, не предусмотрели что когда-нибудь в будущем такому себе Sancho понадобится доказывать коллегам, кто же загадил сетевое файловое хранилище. :) Как правило это решается отдельными папками в хранилище для каждого юзверя и разграничением прав доступа.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

 

Ответить

Sancho

Дата: Понедельник, 25.09.2017, 14:18 |
Сообщение № 9

Группа: Проверенные

Ранг: Обитатель

Сообщений: 279


Репутация:

19

±

Замечаний:
0% ±


2007, 2010, 2013

С помощью GetObject Вы их открываете или подчиняете своему процессу, причем в невидимом состоянии, так задумано. Ну и совсем уж странно Ваше недоумение

Это я уже понял, мне не понятно почему без GetObject ничего вообще не получалось при том, что остальные свойства в исходнике спокойно собирались, а эти (автор и последний автор) в никакую не хотели. может подскажете альтернативу? Оно понятно, что найденный тыком способ собрать информацию абсолютно кривой, поэтому и прошу помочь. А вы почему то ржете…)

 

Ответить

KuklP

Дата: Понедельник, 25.09.2017, 16:35 |
Сообщение № 10

Группа: Проверенные

Ранг: Старожил

Сообщений: 2369


Репутация:

486

±

Замечаний:
0% ±


2003-2010

С чего Вы это взяли? Из-за смайлика? Так это была дружеская улыбка. А в качестве помощи:

это решается отдельными папками в хранилище для каждого юзверя и разграничением прав доступа.

Все остальное — это одевание трусов через голову. Объект FileSystemObject не предоставляет и не имеет таких свойств, какие Вы хотите. Офис предоставляет, но только в своих нативных файлах, внутри которых(файлов) эти свойства и записываются. В csv, txt и т.д. их тоже нет. Возможно в системе где-то в реестре и хранится информация о доступах, но к Экселю это не имеет никакого отношения. Как впрочем и Ваш вопрос и FileSystemObject кстати, тоже. Это один из объектов Windows Script Host, если что.


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Vba excel размерность двумерного массива
  • Vba excel свойства таблицы
  • Vba excel размер файла
  • Vba excel свойства столбца
  • Vba excel свойства массива