<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: скрипт составления списка файлов]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=2627&amp;type=atom" />
	<updated>2008-12-28T13:41:49Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=2627</id>
		<entry>
			<title type="html"><![CDATA[VBScript: скрипт составления списка файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=17646#p17646" />
			<content type="html"><![CDATA[<p>Скрипт составляет список всех файлов указанного пользователем ресурса: диска или папки, включая файлы во всех вложенных папках.<br />Для указания ресурса используется стандартное диалоговое окно &quot;Обзор папок&quot;. Скрипт составляет список всех файлов, содержащихся в указанной пользователем папке и ее подпапках. Результат записывается в файл отчета. <br />Логика работы скрипта описана в комментариях кода.<br /></p><div class="codebox"><pre><code>&#039;**********************************************
&#039;* GetListFiles.vbs
&#039;*---------------------------------------------
&#039;* Скрипт получения списка файлов 
&#039;*---------------------------------------------
&#039;* Programming by VerSys, 2008 
&#039;**********************************************
Option Explicit
&#039;
&#039;Переменные и константы
 Public strPath      &#039;Патч текущих диска, папки, подпапки
 Public strSeparator &#039;Строка-разделитель списка
 Public strSpace     &#039;Строка с заданным количеством пробелов
 Public strBuffer    &#039;Строка-накопитель сведений о папках, файлах
 Dim strFileName     &#039;Имя файла отчета
 Const strHead = &quot;Выберите диск или папку:&quot;
&#039;
&#039;объектные переменные
  Dim objShell
  Dim objDialogFolder    
  Dim objDialogFolderItem
  Dim objFolder
  Dim objFolderItem
  Dim objFSO
&#039;инициализация переменных
   strSeparator = String(40, &quot;-&quot;)
   strSpace = Space(3)
&#039;--------------------------------------------------------------
&#039;Формируем диалоговое окно &quot;Обзор папок&quot; 
 Set objShell = CreateObject(&quot;Shell.Application&quot;) &#039;Объект Shell    
 Set objDialogFolder = objShell.Namespace(&amp;H11&amp;)  &#039;Name_Space = &quot;Мой компьютер&quot;,
 Set objDialogFolderItem = objDialogFolder.Self   &#039;и устанавливаем по умолчанию в диал.окне
     strPath = objDialogFolderItem.Path
&#039;
&#039;Выводим диалоговое окно &quot;Обзор папок&quot; 
 Set objFolder = objShell.BrowseForFolder(0,strHead,0,strPath) 
&#039;
&#039;Если ничего не выбрано - завершаем скрипт      
 If objFolder Is Nothing Then
    Wscript.Quit
 End If
&#039;
&#039;Если пользователь выбрал диск или папку:
&#039;&#039;получаем патч из диалога
  Set objFolderItem = objFolder.Self
      strPath = objFolderItem.Path
&#039;
&#039;&#039;создаем File System Object
  Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
&#039;
&#039;&#039;проверяем доступность указанного ресурса
 If objFSO.FolderExists(strPath) = False Then
    MsgBox &quot;Нет доступа к ресурсу &#039;&#039;&quot; &amp;  strPath &amp; &quot;&#039;&#039;&quot;,_
           vbOkOnly + vbCritical, strPath
    Wscript.Quit
 End If
&#039;
&#039;&#039;вызываем функцию прохода по каталогам и файлам
  dhGetListFolderFile(strPath)
&#039;
&#039;&#039;Создаем файл отчета
&#039;&#039;&#039;Формируем имя файла отчета как строка патча с заменой недопустимых символов
    strFileName = Replace(Replace(strPath, &quot;:\&quot;, &quot;-&quot;), &quot;\&quot;, &quot;=&quot;)
    strFileName = strFileName &amp; &quot;.txt&quot; 
&#039;&#039;&#039;Результат пишем в файл 
    With objFSO.CreateTextFile(strFileName)
     .WriteLine(strBuffer)
     .Close
    End With 
&#039;
&#039;Уничтожаем объекты
 Set objShell = Nothing
 Set objDialogFolder = Nothing
 Set objDialogFolderItem = Nothing
 Set objFolder = Nothing
 Set objFolderItem = Nothing
 Set objFSO = Nothing
&#039;
&#039;Сообщаем о создании отчета
 MsgBox &quot;Отчет создан в файле:&quot; &amp; Chr(13) &amp;_
        &quot;&#039;&#039;&quot; &amp; strFileName &amp; &quot;&#039;&#039;&quot;, vbOkOnly + vbInformation, strPath
&#039;
&#039;--------------------------------------------------------------
&#039; FUNCTION&#039;S
&#039;--------------------------------------------------------------
Function dhGetListFolderFile(strFolderName)
&#039;Функция прохода по каталогам и файлам
 Dim dFolder, dFile, dSubFolder 
   &#039;получаем патч каталога
    Set dFolder = objFSO.GetFolder(strFolderName)
    &#039;проходим файлы текущего каталога
        strBuffer = strBuffer &amp; strFolderName &amp; &quot; &lt;DIR&gt;&quot; &amp; vbNewLine
    For Each dFile In dFolder.Files
        strBuffer = strBuffer &amp; strSpace &amp; dFile.Name &amp; &quot; - &quot; &amp; dFile.Size &amp; vbNewLine
    Next
        strBuffer = strBuffer &amp; strSeparator &amp; vbNewLine
    &#039;проходим рекурсивно по всем подкаталогам
    For Each dSubFolder In dFolder.SubFolders
        dhGetListFolderFile(dSubFolder.Path)
    Next
End Function</code></pre></div>]]></content>
			<author>
				<name><![CDATA[verSys]]></name>
			</author>
			<updated>2008-12-28T13:41:49Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=17646#p17646</id>
		</entry>
</feed>
