Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Скрип Папки старше * дней Архивировать

Ответить
Настройки темы
VBS/WSH/JS - Скрип Папки старше * дней Архивировать

Новый участник


Сообщения: 8
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 07:40, 08-02-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
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
Это сообщение посчитали полезным следующие участники:

Отправлено: 08:22, 08-02-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

' Исходные данные
' ------------------------------------------------------------------------
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+"*.* здесь прописан путь от куда архивировать и задан диапозон файлов ???

Отправлено: 09:02, 08-02-2013 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Z 666 VAD:
я сделал вот так »
Цитата Z 666 VAD:
Мне нужно разжувать последнии команды Плиз скажите что они озночают »
Если «я сделал» — то как понять «последнии команды … скажите что они озночают»?!

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

Отправлено: 16:24, 08-02-2013 | #4


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 14:11, 11-02-2013 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Отправлено: 16:36, 11-02-2013 | #6


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 17:22, 11-02-2013 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Отправлено: 14:55, 12-02-2013 | #8


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

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

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

Отправлено: 14:59, 12-02-2013 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Отправлено: 16:18, 12-02-2013 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - Скрип Папки старше * дней Архивировать

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Нужно удалить лог файлы старше 30 дней ksv_sergo Скриптовые языки администрирования Windows 14 24-03-2016 15:02
Любой язык - [решено] Удаление файлов старше N дней DOCznet Скриптовые языки администрирования Windows 2 27-09-2012 11:42
CMD/BAT - если дата в логе старше 7 дней отписать новую mouserok Скриптовые языки администрирования Windows 5 13-10-2011 15:35
[решено] Автоочистка файлов, старше 5 дней. Universal_gr Программное обеспечение Linux и FreeBSD 1 01-10-2010 01:12
Прочее - удаление файлов старше 10 дней admin666 Общий по Linux 1 23-07-2009 19:09




 
Переход