Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Скрип Папки старше * дней Архивировать (http://forum.oszone.net/showthread.php?t=253468)

Z 666 VAD 08-02-2013 07:40 2085069

Скрип Папки старше * дней Архивировать
 
Привет всем
Я новичок
и в скриптах тоже
Дали задание в папке "C:\1" есть 3 и более папок с файлами
Нужно
Если папка старше 30 дней
ЕЕ необходимо поместить в рар архив

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

Iska 08-02-2013 08:22 2085083

Код:

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 2085097

Супер большое спасибо
Но
я сделал вот так

' Исходные данные
' ------------------------------------------------------------------------
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 2085596

Цитата:

Цитата Z 666 VAD
я сделал вот так »

Цитата:

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

Если «я сделал» — то как понять «последнии команды … скажите что они озночают»?!

P.S. Используйте тэг [code] для оформления кода на форуме. В мешанине из текста и кода с «+» и «-» понять что-то сложно.

Z 666 VAD 11-02-2013 14:11 2087832

Теперь у меня другое задание
Все сделать тоже самое только на WIN 2008 enterprise server с использованием родного архиватора
Гугл уже не помогает ((((((

Iska 11-02-2013 16:36 2087980

Z 666 VAD, какой архиватор подразумевается под «родным»?

Z 666 VAD 11-02-2013 17:22 2088014

встроенный архиватор ZIP

Iska 12-02-2013 14:55 2088700

Z 666 VAD, тут Google не поможет. Встроенный архиватор, как Вы его зовёте, не работает с архивами *.rar.

Z 666 VAD 12-02-2013 14:59 2088707

Да я понял что мой скрипт не подойдет из за команд ВинРара
Теперь ишу скрипт который отработает с родным архиватором
написать я его никак не смогу
нужна помошь

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

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

Iska 12-02-2013 16:18 2088768

Z 666 VAD, вот этот скрипт: WSH: архивация файлов средствами операционной системы (WinXP) — Windows Script Host, HTA (VBScript, JScript) — Серый форум.

Попробуйте так:
читать дальше »
Код:

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 2089256

ISKA большое спасибо
но ошибка
строка 24
символ 3
точнее вот здесь что то не нравится
Код:

With objFSO.CreateTextFile(strZIPFile)

Iska 13-02-2013 16:25 2089574

Z 666 VAD, какая именно ошибка?

Z 666 VAD 14-02-2013 06:55 2090086

Вложений: 1
Ошибка

Iska 15-02-2013 03:03 2090780

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

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

Z 666 VAD 15-02-2013 07:06 2090810

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


Время: 17:20.

Время: 17:20.
© OSzone.net 2001-