<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=9023</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9023&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «JS, VBS: Как назначить дату создания и последнего доступа к файлу?».]]></description>
		<lastBuildDate>Fri, 03 Jan 2014 10:52:54 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78811#p78811</link>
			<description><![CDATA[<p>Дело в том, что эти данные приведены по результатам опросов, и скорее, системных админов компаний. Не факт, что там вообще фигурировала Росиия и многие другие страны.<br />О том как у нас, мы можем судить по результатам знакомств с другими машинами и пользователями сети.<br />К тому же не надо забывать, что на одной машине может быть установлена не одна версия ОС с разной начинкой, поэтому тут всё далеко не так прозрачно.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Fri, 03 Jan 2014 10:52:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78811#p78811</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78810#p78810</link>
			<description><![CDATA[<p>На 2010 год <br /></p><div class="quotebox"><blockquote><p>Well over 90% of the PCs in the world have some version of the .NET Framework installed.</p></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Fri, 03 Jan 2014 10:37:12 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78810#p78810</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78809#p78809</link>
			<description><![CDATA[<p><a href="http://www.hanselman.com/blog/CommentView.aspx?guid=0af5b012-1168-4f2e-ad6b-4e45300c1957">Вот статейка</a>. Но я думаю, цифры не в пользу .NET куда существеннее (25-30%).<br />Адекватным считать можно, но очевидно, что будет не айс.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Fri, 03 Jan 2014 10:31:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78809#p78809</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78803#p78803</link>
			<description><![CDATA[<p>Как на ваш взгляд, коллеги, считаете ли вы адекватеным использование .NET взамен ActiveX? Большой ли процент машин без .NET?</p>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Thu, 02 Jan 2014 20:10:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78803#p78803</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78793#p78793</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>В коде как раз и используются System.IO.File и&nbsp; методы «.SetCreationTime()»,&nbsp; «.SetLastAccessTime()», «.SetLastWriteTime()».</p></blockquote></div><p>Значит, это я Вас поначалу неправильно понял. Вопросов нет.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Thu, 02 Jan 2014 11:58:00 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78793#p78793</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78780#p78780</link>
			<description><![CDATA[<p><strong>alexii</strong>, а можете чуть подробнее написать? Потому что я не до конца Вас понял. В коде как раз и используются System.IO.File и<br />методы «.SetCreationTime()»,<br />«.SetLastAccessTime()», «.SetLastWriteTime()».</p>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Thu, 02 Jan 2014 03:59:21 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78780#p78780</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78764#p78764</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Решение с компиляцией меня больше устраивает, хотя бы по той причине, что скорость выполнения кода JScript.NET быстрее в WSH, да и никакой регистрации не надо.</p></blockquote></div><p>Так и я про компиляцию. Только напрямую: исходный код, пакетный файл.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Wed, 01 Jan 2014 19:06:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78764#p78764</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78761#p78761</link>
			<description><![CDATA[<div class="quotebox"><cite>Xameleon пишет:</cite><blockquote><p>2) В аттаче приложил свой вариант решения. К сожалению через ActiveX, но</p></blockquote></div><p>Большое спасибо! Попробую использовать в решении с манифестом.</p><div class="quotebox"><cite>alexii пишет:</cite><blockquote><p><strong>JSman</strong>, а зачем распаковывать строку в бинарник? Почему не сразу System.IO.File и методы «.SetCreationTime()», «.SetLastAccessTime()», «.SetLastWriteTime()»?</p></blockquote></div><p><strong>alexii</strong>, не хочетсядополнительной регистрации сборок в реестре, в том числе System. Решение с компиляцией меня больше устраивает, хотя бы по той причине, что скорость выполнения кода JScript.NET быстрее в WSH, да и никакой регистрации не надо. </p><div class="quotebox"><cite>Xameleon пишет:</cite><blockquote><p><strong>JSman</strong><br />1) Можно взглянуть на пример ? Уж очень интересная и вкусная тема.</p></blockquote></div><p><strong>Xameleon</strong>, привожу черновой вариант решения. Хочу отметить, что данное решение пашет из-под учетной записи Гость.</p><p>Параметры функции <strong>FileSetTime</strong><br />1. root - каталог, в котором будет осуществляться поиск файлов.<br />2. mask - маска поиска файла. может быть строкой, в которой используются классические * и ?. А также mask может быть регулярным выражением.<br />3. date - строковое представление даты и времени. YYYYMMDDHHMMSS.<br />4. deep - флаг рекурсии.</p><div class="codebox"><pre><code>
Function.prototype.GetResource = function (ResourceName)
{
    if (!this.Resources) 
    {
        var UnNamedResourceIndex = 0, _this = this;
        this.Resources = {};
        
        function f(match, resType, Content)
        {
            _this.Resources[(resType==&quot;[[&quot;)?UnNamedResourceIndex++:resType.slice(1,-1)] = Content; 
        }
        this.toString().replace(/\/\*(\[(?:[^\[]+)?\[)((?:[\r\n]|.)*?)\]\]\*\//gi, f);
    }
    
    return this.Resources[ResourceName];
}

function GetResource(ResourceName)
{
    return arguments.callee.caller.GetResource(ResourceName);
}

    var FSO = fso = new ActiveXObject(&quot;Scripting.FileSystemObject&quot;);
    var WshShell= new ActiveXObject(&quot;WScript.Shell&quot;);

function FileSetTime(root, mask, datestring, typeOfFunction, deep)
{
/*[FileSetTime[
import System.Environment;
import System.IO;

// searches files by a string type classic mask or regexp type mask. if in-param &quot;callback&quot; is undefined function returns an array of found pathes. 
function Search(root, re, callback, deep)
{
    var e, files=[], dirs=[], result=[];
    
    if (!root) root = Directory.GetCurrentDirectory();
    
    if (!re) re = /./;
    
    if (typeof re == &quot;string&quot; &amp;&amp; /^\/.*\/[gmi ]*$/.test(re)) 
    {
        var m = re.match(/(^\/.*\/)([gmi ]*)$/i);
        re = new RegExp(m[1].replace(/^\/|\/$/g,&quot;&quot;), m[2]);
    }
    
    if (typeof re == &quot;string&quot;) re = new RegExp(&quot;(&quot;+re.replace(/[\^\\\*\[\]\{\}\(\)\$]/g, &quot;\\$&amp;&quot;).replace(/\|/g,&quot;)|(&quot;).replace(/\?/g, &quot;.&quot;).replace(/(\*)/g, &quot;.*&quot;)+&quot;$)&quot;, &quot;gi&quot;);
    
    if (!callback) callback = function (a){result.push(a)};
    
    if (typeof deep==&quot;undefined&quot;) deep = true;
    deep = !!deep;
      
    try
    {
        files = Directory.GetFiles(root);
        
        for (var i=0, l=files.length; i&lt;l; i++)
        {
            if (re.test(files[i])) callback(files[i]);
            
        }
        
        if (!deep) return result;
        
        dirs = Directory.GetDirectories(root);
        for (var i=0, l=dirs.length; i&lt;l; i++)
        {
            try {
            Search(dirs[i], re, callback);
            } catch (e){ };
        }
    }
    catch (e) {}
    return result;
}

var root, mask, deep, datestring;

var params = System.Environment.GetCommandLineArgs();
// root, mask, dateString, typeOfFunction {0,1,2}, deep{true|false}

if (params.length!=6) System.Environment.Exit();

var dateMatch = (params[3]+&quot;00000000000000&quot;).match(/^(....)(..)(..)(..)(..)(..)/);
var date = new Date(dateMatch[1], dateMatch[2]-1, dateMatch[3], dateMatch[4], dateMatch[5], dateMatch[6]);

function SetCreationTime(path)
{
    var e; try {File.SetCreationTime(path, date)} catch (e) {};
}

function SetLastAccessTime(path)
{
    var e; try {File.SetLastAccessTime(path, date)} catch (e) {};
}

function SetLastWriteTime(path)
{
    var e; try {File.SetLastWriteTime(path, date)} catch (e) {};
}

var funcs = [SetLastWriteTime, SetCreationTime, SetLastAccessTime];

Search(params[1], params[2], funcs[params[4] % 3], params[5]);
]]*/
    
    function CreateApp()
    {
        var path = WshShell.ExpandEnvironmentStrings(&quot;%TMP%\\test.txt&quot;);
        try {
        var f = fso.CreateTextFile(path,true);
        f.WriteLine(FileSetTime.GetResource(&quot;FileSetTime&quot;));
        f.Close();
        var CurrentDirectory = WshShell.CurrentDirectory;
        WshShell.CurrentDirectory = WshShell.ExpandEnvironmentStrings(&quot;%TMP%&quot;);
        WshShell.Run(&quot;%WINDIR%\\Microsoft.NET\\Framework\\v2.0.50727\\jsc %TMP%\\test.txt&quot;, 0, 1);
        WshShell.CurrentDirectory = CurrentDirectory;
        
        }
        catch (e) {}
    }

    if (!root) root = WshShell.CurrentDirectory;
    if (!mask) mask = &quot;&quot;;
    if (!datestring) datestring=&quot;1970010100000000&quot;; 
    if (typeof typeOfFunction==&quot;undefined&quot;) typeOfFunction = 0;
    if (typeof deep == &quot;undefined&quot;) deep = 1;
    
    
    if (!FSO.FileExists(WshShell.ExpandEnvironmentStrings(&quot;%TMP%\\test.exe&quot;))) {CreateApp();}
    if (FSO.FileExists(WshShell.ExpandEnvironmentStrings(&quot;%TMP%\\test.exe&quot;)))
    WshShell.Run(&quot;%TMP%\\test.exe &quot;+&#039;&quot;&#039;+[root, mask, datestring, typeOfFunction, deep].join(&#039;&quot; &quot;&#039;)+&#039;&quot;&#039;, 0, 1);
}

FileSetTime(WshShell.ExpandEnvironmentStrings(&quot;%TMP%&quot;), &quot;*.txt&quot;, &quot;199212010000&quot;);
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Wed, 01 Jan 2014 18:08:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78761#p78761</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78705#p78705</link>
			<description><![CDATA[<div class="quotebox"><cite>Xameleon пишет:</cite><blockquote><p>С манифестами там гемор, что запускающий интерпретатор (WScript/CScript/и т.п) должен быть в том же каталоге, что и скрипт и ActiveX и манифест.</p></blockquote></div><p>Интерпретатор + компонент + манифест, а скрипт может лежать где угодно.<br />Но по мне лучше такой гемор, чем ерзания в реестре на разных машинах.</p><p>А отдельные утилиты хороши готовыми опциями (рекурсия, файл-источник).<br /></p><div class="quotebox"><cite>Xameleon пишет:</cite><blockquote><p>И канал связи с ними ограниченный, обмен объектами делать неудобно.</p></blockquote></div><p>Это да, хотя логи можно писать в файл через .Run cmd ..., 0, чтобы консоль при их чтении глаз не мозолила. Там по сути кроме проверки статуса выполнения ничего и не требуется.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 31 Dec 2013 10:14:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78705#p78705</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78703#p78703</link>
			<description><![CDATA[<p><strong>Flasher</strong><br /></p><div class="quotebox"><cite>Flasher пишет:</cite><blockquote><p>Что компонент, что утилита - велика ли разница, если таскать что-то дополнительное&nbsp; с собой не возымело нужды?<br />Если лишние файлы не страшны, то проще и без регистрации обойтись, написав манифест.</p></blockquote></div><p>Полностью согласен. Действительно хотелось бы реализовать это без доп. файлов, но пока не нашёл способа. С манифестами там гемор, что запускающий интерпретатор (WScript/CScript/и т.п) должен быть в том же каталоге, что и скрипт и ActiveX и манифест. Иначе он не видит манифеста (на сколько я помню). Возможно ошибаюсь.</p><p>А отдельные утилиты не люблю чисто из эстетических соображений, т.к при этом стартуется отдельный EXE модуль и висит процессом в памяти. Ну фиг знает... Не аккуратненько как-то, IMHO. И канал связи с ними ограниченный, обмен объектами делать неудобно.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Tue, 31 Dec 2013 08:34:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78703#p78703</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78702#p78702</link>
			<description><![CDATA[<div class="quotebox"><cite>JSman пишет:</cite><blockquote><p>Он пратически на каждой машине.</p></blockquote></div><p>Я бы не был столь категоричен, если, конечно, речь не про свои корпоративные. Много где на XP обходятся без Framework&#039;а.</p><p><strong>Xameleon</strong><br />Что компонент, что утилита - велика ли разница, если таскать что-то дополнительное&nbsp; с собой не возымело нужды?<br />Если лишние файлы не страшны, то проще и без регистрации обойтись, написав манифест.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Tue, 31 Dec 2013 08:22:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78702#p78702</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78694#p78694</link>
			<description><![CDATA[<p>1. Менять системную дату категорически не рекомендуется. Совсем.<br />2. Упаковать в base64 можно. Но надо быть готовым к тому, что скрипт будет намертво блокироваться особо продвинутыми антивирусами.</p><p><strong>JSman</strong>, а зачем распаковывать строку в бинарник? Почему не сразу System.IO.File и методы «.SetCreationTime()», «.SetLastAccessTime()», «.SetLastWriteTime()»?</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 31 Dec 2013 00:12:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78694#p78694</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78691#p78691</link>
			<description><![CDATA[<p><strong>JSman</strong><br />1) Можно взглянуть на пример ? Уж очень интересная и вкусная тема.</p><p>2) В аттаче приложил свой вариант решения. К сожалению через ActiveX, но <br />а) с автоматической регистрацией <br />б) кода для регистрации не требуется<br />в) Регистрация и запуск происходит без запросов.</p><p>Там же <span class="bbu">в аттаче полный исходник и апдейтор</span> CAB-а.</p><p>Для теста запустить <strong>sample.hta</strong></p><p>У объекта есть 2 метода:</p><p><strong>OpenFile()</strong> и <strong>UpdateDates()</strong></p><p>и 3 свойства:</p><p><strong>DateCreated, DateLastAccessed, DateLastModified</strong></p><p>После вызова <strong>OpenFile()</strong> свойства заполняются соответствующими датами файла.</p><p>Свойства работают на чтение и запись.</p><p><strong>UpdateDates()</strong> используется для сохранения изменений.</p>]]></description>
			<author><![CDATA[null@example.com (Xameleon)]]></author>
			<pubDate>Mon, 30 Dec 2013 23:58:09 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78691#p78691</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78544#p78544</link>
			<description><![CDATA[<p>В общем придумал способ покрасивее, чем хранить бинарник в коде. Только не плюйтесь <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /> Используем компилятор jscript на .NET под названием jsc.exe. Вот как раз через него все проблемы и можно решить. Он пратически на каждой машине. Какие плюсы? Открытость исходного кода, а также скорость выполнения задачи. Таким образом я как бы &quot;распаковываю&quot; содержание строки в файл и создаю бинарник.</p>]]></description>
			<author><![CDATA[null@example.com (JSmаn)]]></author>
			<pubDate>Thu, 26 Dec 2013 15:05:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78544#p78544</guid>
		</item>
		<item>
			<title><![CDATA[Re: JS, VBS: Как назначить дату создания и последнего доступа к файлу?]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=78524#p78524</link>
			<description><![CDATA[<div class="quotebox"><cite>JSman пишет:</cite><blockquote><p>Например, неудобно со скриптом таскать бинарник, скорее всего его надо вставить в тело функции и по умному распаковывать.</p></blockquote></div><p>Только заметил, что не так прочёл (батник вместо бинарник). Бинарник паковать можно в b64. Как распаковывать, примеры приводились, У <strong>Serge Yolkin</strong> есть тут несколько hta с подобной формой запуска.</p>]]></description>
			<author><![CDATA[null@example.com (Flasher)]]></author>
			<pubDate>Wed, 25 Dec 2013 20:52:40 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=78524#p78524</guid>
		</item>
	</channel>
</rss>
