<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript: удаление файлов старше N количества дней]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=5386</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5386&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript: удаление файлов старше N количества дней».]]></description>
		<lastBuildDate>Fri, 29 Apr 2011 13:56:07 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBScript: удаление файлов старше N количества дней]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=47946#p47946</link>
			<description><![CDATA[<p>OFF: <strong>arcnik</strong>, старайтесь использовать отступы — такой код:<br /></p><div class="codebox"><pre><code>a1 = InputBox(&quot;Введите дату&quot; &amp; Chr(10) &amp; &quot;Пример : 21.12.2111&quot;, &quot;Дата&quot;)
ada1 = Mid(a1, 7, 4) &amp; Mid(a1, 4, 2) &amp; Mid(a1, 1, 2)

Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)

s1 = &quot;D:\test\1\&quot;
s2 = &quot;D:\test\2\&quot;
g1 = Array(s1, s2)

For aa1 = 0 To 1
    Set Folder = FSO.GetFolder(g1(aa1))
    
    For Each File In Folder.Files
        aa = File.DateCreated
        a2 = Mid(aa, 7, 4) &amp; Mid(aa, 4, 2) &amp; Mid(aa, 1, 2)
        n  = File.Path
        
        If ada1 &gt; a2 Then
            FSO.CopyFile n, &quot;D:\test\temp\&quot;, 0
            FSO.DeleteFile n, 0
        End If
    Next
Next

WScript.Quit 1</code></pre></div><p>читается не в пример легче. Ну, и неплохо бы давать переменным «говорящие» имена.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Fri, 29 Apr 2011 13:56:07 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=47946#p47946</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: удаление файлов старше N количества дней]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=47938#p47938</link>
			<description><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><div class="quotebox"><cite>arcnik пишет:</cite><blockquote><p>Я сделал так!</p></blockquote></div><p>А зачем использовать Dictionary, когда обычного массива достаточно?</p></blockquote></div><p>Не вопрос...<br /></p><div class="codebox"><pre><code>a1=InputBox(&quot;Введите дату&quot;&amp;Chr(10)&amp;&quot;Пример : 21.12.2111&quot;, &quot;Дата&quot;)
ada1=Mid(a1,7, 4)&amp;Mid(a1,4, 2)&amp;Mid(a1,1, 2)
Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
s1=&quot;D:\test\1\&quot;
s2=&quot;D:\test\2\&quot;
g1=Array(s1, s2)
for aa1=0 to 1
Set Folder = FSO.GetFolder(g1(aa1))
For Each File In Folder.Files
aa=File.DateCreated
a2= Mid(aa,7, 4)&amp;Mid(aa,4, 2)&amp;Mid(aa,1, 2)
n= File.Path
if ada1&gt;a2 then
FSO.CopyFile n, &quot;D:\test\temp\&quot;, 0
FSO.DeleteFile n, 0
end if
Next
Next
WScript.Quit 1</code></pre></div><p>Я новичок в этом деле. <img src="//forum.script-coding.com/img/smilies/big_smile.png" width="15" height="15" /><br />А если посмотреть в корень проблемы, то непонятно зачем копировать и удалять, когда можно просто перенести файлы в нужную папку.<br />Да кстати еще надо поработать над проблемой с одинаковыми именами файлов.</p>]]></description>
			<author><![CDATA[null@example.com (arcnik)]]></author>
			<pubDate>Fri, 29 Apr 2011 12:14:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=47938#p47938</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: удаление файлов старше N количества дней]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=47925#p47925</link>
			<description><![CDATA[<div class="quotebox"><cite>arcnik пишет:</cite><blockquote><p>Я сделал так!</p></blockquote></div><p>А зачем использовать Dictionary, когда обычного массива достаточно?</p><div class="quotebox"><cite>djrust пишет:</cite><blockquote><p>Как это скрипт передалать,чтобы было больше одного пути для удаления?допустим сколько захочу!</p></blockquote></div><p>Указываете необходимые каталоги в командной строке. Проверяете все переданные аргументы и дальше уже выполняете требуемые действия<br /></p><div class="codebox"><pre><code>cscript script.vbs &quot;C:\Program Files&quot; C:\WINDOWS C:\Users</code></pre></div><div class="codebox"><pre><code>
fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
For i = 0 To WScript.Arguments.Count
    f = WScript.Arguments.Item(i)
    If fso.FolderExists(f) Then
...
Next</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Fri, 29 Apr 2011 07:34:22 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=47925#p47925</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: удаление файлов старше N количества дней]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=47924#p47924</link>
			<description><![CDATA[<p>Доброго времени суток!<br />Я сделал так! <img src="//forum.script-coding.com/img/smilies/big_smile.png" width="15" height="15" /><br /></p><div class="codebox"><pre><code>a1=InputBox(&quot;Введите дату&quot;&amp;Chr(10)&amp;&quot;Пример : 21.12.2111&quot;, &quot;Дата&quot;)
ada1=Mid(a1,7, 4)&amp;Mid(a1,4, 2)&amp;Mid(a1,1, 2)
Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set Dict = CreateObject(&quot;Scripting.Dictionary&quot;)
With Dict &#039;Перечисляем пути поиска
.Item(1) = &quot;D:\test\&quot;
.Item(2) = &quot;D:\test\словарь\&quot;
End With
for aa1=1 to 2 &#039; перечислить кол-во получившихся путей)
Set Folder = FSO.GetFolder(Dict.Item(aa1))
For Each File In Folder.Files
aa=File.DateCreated
a2= Mid(aa,7, 4)&amp;Mid(aa,4, 2)&amp;Mid(aa,1, 2)
n= File.Path
if ada1&gt;a2 then
FSO.CopyFile n, &quot;D:\Backup\&quot;, 0
FSO.DeleteFile n, 0
end if
Next
Next</code></pre></div><p>Как итог, все файлы старше введенной даты будут удалены и резервно копированы <img src="//forum.script-coding.com/img/smilies/cool.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (arcnik)]]></author>
			<pubDate>Fri, 29 Apr 2011 06:46:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=47924#p47924</guid>
		</item>
		<item>
			<title><![CDATA[VBScript: удаление файлов старше N количества дней]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=43869#p43869</link>
			<description><![CDATA[<p>Как это скрипт передалать,чтобы было больше одного пути для удаления?допустим сколько захочу!<br /></p><div class="codebox"><pre><code>&#039; ---------- 
&#039; Начало основной секции. Отсюда начнется выполнение при запуске скрипта. 
Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
&#039; директория, где будут храниться бэкапы. Вы должны вписать свою директорию
&#039; вместо &quot;X:\DailyBackup&quot;
sDir = &quot;D:\backup&quot;
Set objDir = GetFolder(sDir)
DeleteOlderFiles(objDir)

&#039; ---------- Секция функций

&#039; Получить файл
Function GetFile(sFile)
 On Error Resume Next
 
 Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
 Set GetFile = FSO.GetFile(sFile)
 if err.number &lt;&gt; 0 then
    WScript.Echo &quot;Error Opening file &quot; &amp; sFile &amp; VBlf &amp; &quot;[&quot;&amp;Err.Description&amp;&quot;]&quot;
    Wscript.Quit Err.number
 end if
End Function 

&#039; Получить папку
Function GetFolder (sFolder)
 On Error Resume Next
 
 Set GetFolder = FSO.GetFolder(sFolder)
 if err.number &lt;&gt; 0 then
    WScript.Echo &quot;Error Opening folder &quot; &amp; sFolder &amp; VBlf &amp; &quot;[&quot;&amp;Err.Description&amp;&quot;]&quot;
    Wscript.Quit Err.number
 end if
End Function 

&#039; удалить один файл (имя файла передается в sFile)
Sub DeleteFile(sFile)
 On Error Resume Next

 FSO.DeleteFile sFile, True
 if err.number &lt;&gt; 0 then
    WScript.Echo &quot;Error Deleteing file &quot; &amp; sFile &amp; VBlf &amp; &quot;[&quot;&amp;Err.Description&amp;&quot;]&quot;
    Wscript.Quit Err.number
 end if
End Sub 

&#039; Удалить файлы старше 7 дней
Sub DeleteOlderFiles(objDir)
    &#039; просматриваем все файлы в директории
    for each efile in objDir.Files        
        &#039; используем DateLastModified, а не DateCreated, поскольку
        &#039; DateCreated не всегда возвращает правильную дату
        FileDate = efile.DateLastModified 
        Age = DateDiff(&quot;d&quot;,Now,FileDate)        
        &#039; в данном случае возраст файла не больше семи дней
        If Abs(Age)&gt;7 Then 
            DeleteFile(efile)
        End If        
    next 
End Sub</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (djrust)]]></author>
			<pubDate>Sun, 16 Jan 2011 18:20:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=43869#p43869</guid>
		</item>
	</channel>
</rss>
