<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript/JScript: Получить список файлов и их свойства]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=5103</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5103&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript/JScript: Получить список файлов и их свойства».]]></description>
		<lastBuildDate>Mon, 01 Nov 2010 06:44:18 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBScript/JScript: Получить список файлов и их свойства]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=41118#p41118</link>
			<description><![CDATA[<p>Спасибо за код и за ссылки.<br />Для начала подойдет, буду экспериментировать.</p><p>По факту экспериментов отпишусь.</p>]]></description>
			<author><![CDATA[null@example.com (CheHu)]]></author>
			<pubDate>Mon, 01 Nov 2010 06:44:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=41118#p41118</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript/JScript: Получить список файлов и их свойства]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=41035#p41035</link>
			<description><![CDATA[<p>Все очень просто... Именно по этой причине местные старожилы вряд ли будут вам внятно - 100 раз отвечено, и приведено в примерах. <img src="//forum.script-coding.com/img/smilies/big_smile.png" width="15" height="15" /></p><p>Но не расстраивайтесь, вот вам кусочки из которых все это соберете.<br />1) обход дерева файлов/папок:<br /></p><div class="codebox"><pre><code>//Обход дерева папок с показом содержимого
var oFS = new ActiveXObject(&quot;Scripting.FileSystemObject&quot;);
var oFld = (oFS.GetFile(WScript.ScriptFullName)).ParentFolder.ParentFolder;
TreeDemo(oFld);

function TreeDemo(oFld)
{
  WScript.Echo(oFld.Path); //Показать путь
  var enFolders = new Enumerator(oFld.SubFolders);
  for ( ; !enFolders.atEnd(); enFolders.moveNext())
    WScript.Echo(&quot;  &quot;+ enFolders.item().Name+ &quot; (папка)&quot;); //Показать папки
  enFolders = new Enumerator(oFld.Files); //Теперь это колл. файлов
  for ( ; !enFolders.atEnd(); enFolders.moveNext())
    WScript.Echo(&quot;  &quot;+ enFolders.item().Name); //Показать файлы
  enFolders = new Enumerator(oFld.SubFolders); //Снова коллекция папок
  for ( ; !enFolders.atEnd(); enFolders.moveNext())
    arguments.callee(enFolders.item()); //Рекурсия в подпапку
}</code></pre></div><p>2) Свойства получать через oFS.GetFile().Свойство (в примере выше использовалось одно из них - Name)<br />Ассортимент (для общего представления) следующий:<br /></p><div class="quotebox"><blockquote><p>Свойства oFile (файла)<br />-------------------------<br /> 	oFile	{...}	Object<br />	Path	&quot;D:\00\Scripts\_debug-logs-files\file_props.js&quot;	String<br />	Name	&quot;file_props.js&quot;	String<br />	ShortPath	&quot;D:\00\Scripts\_DEBUG~1\FILE_P~1.JS&quot;	String<br />	ShortName	&quot;FILE_P~1.JS&quot;	String<br /> 	Drive	{...}	Object<br /> 	ParentFolder	{...}	Object<br />	Attributes	32	Object<br />	DateCreated	10.05.2010 15:48:10	Date<br />	DateLastModified	10.05.2010 15:54:02	Date<br />	DateLastAccessed	10.05.2010 15:48:10	Date<br />	Size	221	Variant<br />	Type	&quot;JScript Script File&quot;	String</p><p>Свойства oFolder (папки)<br />---------------------------<br />-	oFolder	{...}	Object<br />	Path	&quot;D:\00\Scripts\_debug-logs-files&quot;	String<br />	Name	&quot;_debug-logs-files&quot;	String<br />	ShortPath	&quot;D:\00\Scripts\_DEBUG~1&quot;	String<br />	ShortName	&quot;_DEBUG~1&quot;	String<br />-	Drive	{...}	Object<br />&nbsp; 	Path	&quot;D:&quot;	String<br />&nbsp; 	DriveLetter	&quot;D&quot;	String<br />&nbsp; 	ShareName	&quot;&quot;	String<br />&nbsp; 	DriveType	2	Object<br />&nbsp; +	RootFolder	{...}	Object<br />&nbsp; 	AvailableSpace	551718150144	Variant<br />&nbsp; 	FreeSpace	551718150144	Variant<br />&nbsp; 	TotalSize	1000203087872	Variant<br />&nbsp; 	VolumeName	&quot;wdj&quot;	String<br />&nbsp; 	FileSystem	&quot;NTFS&quot;	String<br />&nbsp; 	SerialNumber	143236712	Number<br />&nbsp; 	IsReady	true	Boolean<br />+	ParentFolder	{...}	Object<br />	Attributes	16	Object<br />	DateCreated	02.05.2010 18:37:11	Date<br />	DateLastModified	10.05.2010 15:48:10	Date<br />	DateLastAccessed	10.05.2010 15:48:10	Date<br />	Type	&quot;Папка с файлами&quot;	String<br />	IsRootFolder	false	Boolean<br />	Size	16531	Variant<br />-	SubFolders	{...}	Object<br />&nbsp; 	Item		Object<br />&nbsp; 	_NewEnum	{...}	Object<br />&nbsp; 	Count	0	Number<br />-	Files	{...}	Object<br />&nbsp; 	Item		Object<br />&nbsp; 	_NewEnum	{...}	Object<br />&nbsp; 	Count	10	Number</p></blockquote></div><p>3) Чтение/запись:<br />(к данному коду следует <span class="bbu">относиться критически</span> - это демо с тучей ненужностей. Скорее не рабочий код, а рассуждения на тему &quot;а что если...&quot;)<br /></p><div class="quotebox"><blockquote><p>var sReadFileName = &quot;4_read.txt&quot;;<br />var sWriteFileName = &quot;4_write.txt&quot;;</p><p>var sReadFileFullName = sGetReadFileFullName(sReadFileName);<br />var sWriteFileFullName = sGetReadFileFullName(sWriteFileName);</p><p>var oReadFile, oWriteFile, oAppendFile;</p><p>var ForReading = 1, ForWriting = 2, ForAppending = 8; //Ручками прописываем режимы!<br />var oFS = new ActiveXObject(&quot;Scripting.FileSystemObject&quot;);</p><p>//Чтение файла<br />var sMsg = sReadFileFullName + &quot; &quot;;<br />sMsg += oFS.FileExists(sReadFileFullName) ? &quot;есть!&quot; : &quot;нет&quot;;<br />WScript.Echo(sMsg);<br />if (oFS.FileExists(sReadFileFullName))<br />{<br />&nbsp; try<br />&nbsp; {<br />&nbsp; &nbsp; /*Синтаксис object.OpenTextFile(filename[, iomode[, create[, format]]])<br />&nbsp; &nbsp; iomode: ForReading = 1, ForWriting = 2, ForAppending = 8<br />&nbsp; &nbsp; create: если запрошенный файл не существует&nbsp; &nbsp;true создавать, false не создавать<br />&nbsp; &nbsp; format:&nbsp; &nbsp;-2&nbsp; Opens the file using the system default<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; -1&nbsp; Opens the file as Unicode<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0&nbsp; Opens the file as ASCII<br />&nbsp; &nbsp; */<br />&nbsp; &nbsp; oReadFile = oFS.OpenTextFile(sReadFileFullName, ForReading, false); //3-й параметр <br />&nbsp; &nbsp; /*Возможные ошибки при OpenTextFile(): <br />&nbsp; &nbsp; &nbsp; &nbsp; * путь до файла не существует, <br />&nbsp; &nbsp; &nbsp; &nbsp; * атрибут RO (hidden, system - не мешают),<br />&nbsp; &nbsp; &nbsp; &nbsp; * недостаточные права доступа<br />&nbsp; &nbsp; &nbsp; &nbsp; * недостаток места на диске (впрочем, это уже в процессе записи в файл)<br />&nbsp; &nbsp; */<br />&nbsp; &nbsp; WScript.Echo(&quot;Содержимое файла &quot; + sReadFileName + &quot;:\n&quot; + oReadFile.ReadAll());<br />&nbsp; &nbsp; WScript.Echo(&quot;---\nЧтение его же по строкам:&quot;);<br />&nbsp; &nbsp; oReadFile.Close();<br />&nbsp; &nbsp; oReadFile = oFS.OpenTextFile(sReadFileFullName, ForReading, false); //По достижении конца надо заново переоткрывать <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /><br />&nbsp; &nbsp; //while(!oReadFile.AtEndOfStream) //как вариант<br />&nbsp; &nbsp; for ( var i = 1; !oReadFile.AtEndOfStream; i++)<br />&nbsp; &nbsp; {<br />&nbsp; &nbsp; &nbsp; var txt = ((i &lt; 10) ? &quot;0&quot; : &quot;&quot;) + i + &quot; &gt;&quot; + oReadFile.ReadLine() + &quot;&lt;&quot;;<br />&nbsp; &nbsp; &nbsp; WScript.Echo(txt);<br />&nbsp; &nbsp; }<br />&nbsp; &nbsp; //&nbsp; &nbsp; &nbsp;oReadFile.WriteLine(&quot;xxx&quot;); //Вызовет ошибку &quot;Недопустимый режим файла&quot;<br />&nbsp; &nbsp; oReadFile.Close();<br />&nbsp; } catch(e)<br />&nbsp; {<br />&nbsp; &nbsp; WScript.Echo(&quot;Ошибка при работе с файлом \&quot;&quot; + sReadFileName + &quot;\&quot;: &quot; + e.message);<br />&nbsp; &nbsp; vardump(e);<br />&nbsp; }<br />}</p><p>//Запись файла<br />oWriteFile = oFS.OpenTextFile(sWriteFileFullName, ForAppending, true); //Не проверяем, есть ли - все равно делаем<br />WScript.Echo(&quot;Открываем файл &quot; + sReadFileName + &quot; для записи&quot;);<br />var dt = new Date();<br />sMsg = &quot;перезаписываемый файл\n&quot; + dt.toLocaleString() + &quot;\n&quot;;<br />sMsg += &quot;случайное число &quot; + Math.random().toFixed(5) + &quot;\n&quot;<br />WScript.Echo(sMsg);<br />oWriteFile.WriteLine(sMsg);<br />oWriteFile.Close();<br />WScript.Echo(&quot;Записали, закрыли.&quot;);</p></blockquote></div><p>4) Самое главное. <a href="http://forum.script-coding.com/viewtopic.php?id=10">Коллекция ссылок на документацию</a><br />Если с английским более менее, рекомендую chm из 3 поста.</p><p>(Это были примеры на JScript)</p>]]></description>
			<author><![CDATA[null@example.com (jite)]]></author>
			<pubDate>Fri, 29 Oct 2010 21:04:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=41035#p41035</guid>
		</item>
		<item>
			<title><![CDATA[VBScript/JScript: Получить список файлов и их свойства]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=41018#p41018</link>
			<description><![CDATA[<p>Добрый день.</p><p>Нужна помощь в написании скрипта, который выполняет следующие действия:</p><p>&nbsp; - обрабатывает каталог, указанный параметром на входе, получая иерархическую структуру входящих в него папок и файлов.<br />&nbsp; - для файлов получает свойства (размер файла, полный путь, дата создания, дата последнего редактирования, расширение (тип), название, тема, автор, категория, ключевые слова, комментарии).<br />&nbsp; - формирует txt или xml файл, который записывает по адресу, указанному во входящем параметре.</p><p>Дополнительный функционал (если это возможно):<br />&nbsp; - на основании подготовленного шаблона с перечнем файлов (txt или xml) внести изменения в свойства этих файлов (тема, автор, категория, ключевые слова, комментарии) и сохранить их.</p><p>Частично похожие скрипты здесь попадались, но мои знания пока на уровне плинтуса....<br />Прошу помочь.</p><p>Цель затеи: инвентаризация существующих файлов и присвоение тегов для дальнейшего использования.</p>]]></description>
			<author><![CDATA[null@example.com (CheHu)]]></author>
			<pubDate>Fri, 29 Oct 2010 12:38:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=41018#p41018</guid>
		</item>
	</channel>
</rss>
