Показать полную графическую версию : Скрип Папки старше * дней Архивировать
Z 666 VAD
08-02-2013, 07:40
Привет всем
Я новичок
и в скриптах тоже
Дали задание в папке "C:\1" есть 3 и более папок с файлами
Нужно
Если папка старше 30 дней
ЕЕ необходимо поместить в рар архив
Мощно юзаю гугл
Но пока результатов мало
Помогите !!!
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+"*.* здесь прописан путь от куда архивировать и задан диапозон файлов ???
я сделал вот так »
Мне нужно разжувать последнии команды Плиз скажите что они озночают »
Если «я сделал» — то как понять «последнии команды … скажите что они озночают»?!
P.S. Используйте тэг [code] (http://forum.oszone.net/misc.php?do=bbcode#code) для оформления кода на форуме. В мешанине из текста и кода с «+» и «-» понять что-то сложно.
Z 666 VAD
11-02-2013, 14:11
Теперь у меня другое задание
Все сделать тоже самое только на WIN 2008 enterprise server с использованием родного архиватора
Гугл уже не помогает ((((((
Z 666 VAD, какой архиватор подразумевается под «родным»?
Z 666 VAD
11-02-2013, 17:22
встроенный архиватор ZIP
Z 666 VAD, тут Google не поможет. Встроенный архиватор, как Вы его зовёте, не работает с архивами *.rar.
Z 666 VAD
12-02-2013, 14:59
Да я понял что мой скрипт не подойдет из за команд ВинРара
Теперь ишу скрипт который отработает с родным архиватором
написать я его никак не смогу
нужна помошь
Да я понял
Потому что в моем батнике используется команды ВинРара
Теперь нужно написать скрипт который использует встроенный архиватор 2008 винды
Нужна помощь
Как это можно реализовать
Где найти хотя бы похожий скрипт
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)
Z 666 VAD, какая именно ошибка?
Z 666 VAD
14-02-2013, 06:55
Ошибка
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.