Войти

Показать полную графическую версию : Скрип Папки старше * дней Архивировать


Z 666 VAD
08-02-2013, 07:40
Привет всем
Я новичок
и в скриптах тоже
Дали задание в папке "C:\1" есть 3 и более папок с файлами
Нужно
Если папка старше 30 дней
ЕЕ необходимо поместить в рар архив

Мощно юзаю гугл
Но пока результатов мало
Помогите !!!

Iska
08-02-2013, 08:22
Option Explicit

Dim strFolder

Dim objFSO
Dim objWshShell

Dim objSubFolder


strFolder = "C:\1"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set objWshShell = WScript.CreateObject("WScript.Shell")

If objFSO.FolderExists(strFolder) Then
For Each objSubFolder In objFSO.GetFolder(strFolder).SubFolders
If DateDiff("d", objSubFolder.DateLastModified, Now()) > 30 Then
WScript.Echo objSubFolder.Path

objWshShell.Run """%ProgramFiles%\WinRAR\WinRAR.exe"" a ""c:\Archive.rar"" " & objSubFolder.Path, 1, True
End If
Next
Else
WScript.Echo "Folder [" & strFolder & "] not found."
End If

Set objWshShell = Nothing
Set objFSO = Nothing

WScript.Quit 0

Z 666 VAD
08-02-2013, 09:02
Супер большое спасибо
Но
я сделал вот так

' Исходные данные
' ------------------------------------------------------------------------
DirRab = "c:\1\"
DirArc = "c:\1\"

NDaysDele = 30

Arc = """C:\Program Files (x86)\WinRAR\winrar.exe""" ' У меня винда 7 и здесь лежит архиватор !!!
' ------------------------------------------------------------------------

MDate = CStr(DateAdd("d",-NDaysDele,Date))

Set WS = CreateObject("WScript.Shell")
DateArc=Mid(MDate,7,4)+Mid(MDate,4,2)+Mid(MDate,1,2)

R = WS.Run(Arc+" a -r -df -tb"+DateArc+"0001 """+DirArc+DateArc+""" """+DirRab+"*.*""", 1, True)

Мне нужно разжувать последнии команды
Плиз скажите что они озночают

MDate = CStr(DateAdd("d",-NDaysDele,Date)) - Данная команда сравнивает все файли с текушей даты компа ))) ????

DateArc=Mid(MDate,7,4)+Mid(MDate,4,2)+Mid(MDate,1,2) - здесь кажется задается переменная для рассчета количества дней файла Или же здесь задается формула высчета количество дней файлов ???? Из курса скрипта

R = WS.Run(Arc+" a -r -df -tb"+DateArc+"0001 """+DirArc+DateArc+""" """+DirRab+"*.*""", 1, True) - данная команда уже использует рар команды
"a" "r" "df" я понял
-tb - Зачем вот это команда Я же указал диапозон ?? NDaysDele = 30

Что это значит "+DateArc+"0001 """+DirArc+DateArc+""" """+DirRab+"*.*""", 1, True

Я правильно понимаю ???
+DateArc+"0001 данная команда ссылается на DateArc=Mid(MDate,7,4)+Mid(MDate,4,2)+Mid(MDate,1,2)
+DirArc+DateArc+ Он создает архив с датой создания файла виновника
Я хочу сделать чтобы создовался рар архив с произвольным именем ??? как сделать ??
+DirRab+"*.* здесь прописан путь от куда архивировать и задан диапозон файлов ???

Iska
08-02-2013, 16:24
я сделал вот так »
Мне нужно разжувать последнии команды Плиз скажите что они озночают »
Если «я сделал» — то как понять «последнии команды … скажите что они озночают»?!

P.S. Используйте тэг [code] (http://forum.oszone.net/misc.php?do=bbcode#code) для оформления кода на форуме. В мешанине из текста и кода с «+» и «-» понять что-то сложно.

Z 666 VAD
11-02-2013, 14:11
Теперь у меня другое задание
Все сделать тоже самое только на WIN 2008 enterprise server с использованием родного архиватора
Гугл уже не помогает ((((((

Iska
11-02-2013, 16:36
Z 666 VAD, какой архиватор подразумевается под «родным»?

Z 666 VAD
11-02-2013, 17:22
встроенный архиватор ZIP

Iska
12-02-2013, 14:55
Z 666 VAD, тут Google не поможет. Встроенный архиватор, как Вы его зовёте, не работает с архивами *.rar.

Z 666 VAD
12-02-2013, 14:59
Да я понял что мой скрипт не подойдет из за команд ВинРара
Теперь ишу скрипт который отработает с родным архиватором
написать я его никак не смогу
нужна помошь

Да я понял
Потому что в моем батнике используется команды ВинРара

Теперь нужно написать скрипт который использует встроенный архиватор 2008 винды
Нужна помощь
Как это можно реализовать
Где найти хотя бы похожий скрипт

Iska
12-02-2013, 16:18
Z 666 VAD, вот этот скрипт: WSH: архивация файлов средствами операционной системы (WinXP) — Windows Script Host, HTA (VBScript, JScript) — Серый форум (http://forum.script-coding.com/viewtopic.php?id=296).

Попробуйте так:
Option Explicit

Dim strFolder
Dim strZIPFile

Dim objShell
Dim objFolder

Dim objFSO

Dim objSubFolder
Dim lngSubFoldersCount


strFolder = "C:\1"
strZIPFile = "C:\Archive.zip"


Set objShell = WScript.CreateObject("Shell.Application")
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FolderExists(strFolder) Then
If Not objFSO.FileExists(strZIPFile) Then
With objFSO.CreateTextFile(strZIPFile)
.Write "PK" & Chr(5) & Chr(6) & String(18, 0)
.Close
End With
End If

Set objFolder = objShell.NameSpace(strZIPFile)

If Not objFolder Is Nothing Then
lngSubFoldersCount = 0

For Each objSubFolder In objFSO.GetFolder(strFolder).SubFolders
If DateDiff("d", objSubFolder.DateLastModified, Now()) > 30 Then
WScript.Echo objSubFolder.Path

lngSubFoldersCount = lngSubFoldersCount + 1

objFolder.CopyHere objSubFolder.Path
End If
Next

Do
WScript.Sleep 100
Loop Until objFolder.Items.Count = lngSubFoldersCount

Set objFolder = Nothing
Else
WScript.Echo "Can't access to ZIP file [" & strZIPFile & "]."
End If
Else
WScript.Echo "Folder [" & strFolder & "] not found."
End If

Set objFSO = Nothing
Set objShell = Nothing

WScript.Quit 0

Z 666 VAD
13-02-2013, 08:29
ISKA большое спасибо
но ошибка
строка 24
символ 3
точнее вот здесь что то не нравится
With objFSO.CreateTextFile(strZIPFile)

Iska
13-02-2013, 16:25
Z 666 VAD, какая именно ошибка?

Z 666 VAD
14-02-2013, 06:55
Ошибка

Iska
15-02-2013, 03:03
Z 666 VAD, достаточно было нажать «Ctrl-C» в окне сообщения об ошибке и вставить текст из буфера обмена в сообщение, обрамив его тэгом «code». И Вам быстрее, и отвечающему удобнее.

Проверьте, есть ли у сценария права на создание файла по месту, указанному в «strZIPFile».

Z 666 VAD
15-02-2013, 07:06
Спасибо за наводку
Ошибка была
Не мог сохранить в корень диска strZIPFile = "C:\Archive.zip"
Поменял путь сохранения ЗИП файла в "C:\1\Archive.zip"




© OSzone.net 2001-2012