Имя пользователя:
Пароль:
 | Правила  

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

Ответить
Настройки темы
VBS/WSH/JS - [решено] Проверка изменений папки, при обнаружении - архивирование/копирование.

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


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

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


Изменения
Автор: daniil98797
Дата: 13-02-2013
Собственно, сабж.
Нужен скрипт, проверяющий изменения папки. И при обнаружении архивирующий либо копирующий ее. Причем при каждом изменении, одно изменение = одна папка или архив.
Заранее спасибо!

Отправлено: 02:29, 13-02-2013

 

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


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

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


Оказалось, что все решается очень просто. Создаем батник:
Код: Выделить весь код
:again
xcopy Folder1 Folder2 /d
cscript //nologo delay.vbs 5000
goto:again
И файл delay.vbs с таким содержимым:
Код: Выделить весь код
wscript.sleep wscript.arguments(0)
Получается скрипт, проверяющий изменения каждые пять секунд и копирующий только новые файлы.

Вот всегда так, полдня пытаешся что-то сделать, обращаешся за помощью на форум и сразу сам находишь решение.

Отправлено: 03:25, 13-02-2013 | #2



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

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


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


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

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


Усложним задачу.
Нужно чтоб при изменении данной папки, а именно создании в ней нового файла, на экране пользователя выходило сообщение: В папке создан новый файл с названием "......" Хотите открыть файл? и две кнопки ОК и Отмена ))) трудно так?

Отправлено: 18:21, 14-07-2014 | #3


Ветеран


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

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


Не трудно.

Но если открывать файл нечем?

Отправлено: 02:13, 15-07-2014 | #4


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


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

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


Ну там уже виндовс берет на себя задачу чем открывать..
Главное чтобы диалоговое окно появлялось, а чем открыть- уж пользователю на выбор или программа по умолчанию.. А че- серьезно чтоль можно и так сделать?

Отправлено: 15:06, 19-07-2014 | #5


Ветеран


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

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


Цитата dinovasya@vk:
Ну там уже виндовс берет на себя задачу чем открывать.. »
Не берёт.

Цитата dinovasya@vk:
а чем открыть- уж пользователю на выбор или программа по умолчанию.. »
Нет программы по умолчанию, нет — понимаете?

Отправлено: 18:47, 19-07-2014 | #6


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


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

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



то есть такое окно не откроется?

Ну а что тогда произойдет? давайте я попробую. чот куда вставить?

Отправлено: 20:00, 19-07-2014 | #7


Ветеран


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

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


Цитата dinovasya@vk:
давайте я попробую. чот куда вставить? »
Пробуйте:
читать дальше »
Код: Выделить весь код
Option Explicit

Dim strSourceFolder

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim objSWbemEventSource
Dim objSWbemObjectEx


strSourceFolder = "C:\Source"

strComputer = "."

Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")

Set objSWbemEventSource = objSWbemServicesEx.ExecNotificationQuery( _
	"SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE " & _
	"TargetInstance ISA 'CIM_DirectoryContainsFile' AND " & _
	"TargetInstance.GroupComponent = 'Win32_Directory.Name=""" & Replace(strSourceFolder, "\", "\\\\") & """'" _
)

Do
	With objSWbemServicesEx.Get(objSWbemEventSource.NextEvent.TargetInstance.PartComponent)
		If MsgBox("Хотите открыть файл?", vbQuestion & vbOKCancel, "Cоздан новый файл [" & .Name & "]") = vbOK Then
			WScript.CreateObject("Shell.Application").ShellExecute .Name
		End If
	End With
Loop

WScript.Quit 0
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:18, 21-07-2014 | #8


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


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

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


Вот что выходит



PS F:\Users\Admin> Option Explicit
Имя "Option" не распознано как имя командлета, функции, файла скрипта или выполняемой програм
написания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:7
+ Option <<<< Explicit
+ CategoryInfo : ObjectNotFound: (Option:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

PS F:\Users\Admin>
PS F:\Users\Admin> Dim strSourceFolder
Имя "Dim" не распознано как имя командлета, функции, файла скрипта или выполняемой программы.
писания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:4
+ Dim <<<< strSourceFolder
+ CategoryInfo : ObjectNotFound: (Dim:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

PS F:\Users\Admin>
PS F:\Users\Admin> Dim strComputer
Имя "Dim" не распознано как имя командлета, функции, файла скрипта или выполняемой программы.
писания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:4
+ Dim <<<< strComputer
+ CategoryInfo : ObjectNotFound: (Dim:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

PS F:\Users\Admin>
PS F:\Users\Admin> Dim objSWbemLocator
Имя "Dim" не распознано как имя командлета, функции, файла скрипта или выполняемой программы.
писания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:4
+ Dim <<<< objSWbemLocator
+ CategoryInfo : ObjectNotFound: (Dim:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

PS F:\Users\Admin> Dim objSWbemServicesEx
Имя "Dim" не распознано как имя командлета, функции, файла скрипта или выполняемой программы.
писания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:4
+ Dim <<<< objSWbemServicesEx
+ CategoryInfo : ObjectNotFound: (Dim:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

PS F:\Users\Admin> Dim objSWbemEventSource
Имя "Dim" не распознано как имя командлета, функции, файла скрипта или выполняемой программы.
писания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:4
+ Dim <<<< objSWbemEventSource
+ CategoryInfo : ObjectNotFound: (Dim:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

PS F:\Users\Admin> Dim objSWbemObjectEx
Имя "Dim" не распознано как имя командлета, функции, файла скрипта или выполняемой программы.
писания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:4
+ Dim <<<< objSWbemObjectEx
+ CategoryInfo : ObjectNotFound: (Dim:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

PS F:\Users\Admin>
PS F:\Users\Admin>
PS F:\Users\Admin> strSourceFolder = "\\server\open\test"
Имя "strSourceFolder" не распознано как имя командлета, функции, файла скрипта или выполняемо
вильность написания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:16
+ strSourceFolder <<<< = "\\server\open\test"
+ CategoryInfo : ObjectNotFound: (strSourceFolder:String) [], CommandNotFoundExc
+ FullyQualifiedErrorId : CommandNotFoundException

PS F:\Users\Admin>
PS F:\Users\Admin> strComputer = "."
Имя "strComputer" не распознано как имя командлета, функции, файла скрипта или выполняемой пр
ность написания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:12
+ strComputer <<<< = "."
+ CategoryInfo : ObjectNotFound: (strComputer:String) [], CommandNotFoundExcepti
+ FullyQualifiedErrorId : CommandNotFoundException

PS F:\Users\Admin>
PS F:\Users\Admin> Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator"
Set-Variable : Не удается найти позиционный параметр, принимающий аргумент "WScript.CreateObj
строка:1 знак:4
+ Set <<<< objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
+ CategoryInfo : InvalidArgument: ( [Set-Variable], ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetVa

PS F:\Users\Admin> Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\
Имя "strComputer" не распознано как имя командлета, функции, файла скрипта или выполняемой пр
ность написания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:67
+ Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer <<<< , "root\cimv2")
+ CategoryInfo : ObjectNotFound: (strComputer:String) [], CommandNotFoundExcepti
+ FullyQualifiedErrorId : CommandNotFoundException

PS F:\Users\Admin>
PS F:\Users\Admin> Set objSWbemEventSource = objSWbemServicesEx.ExecNotificationQuery( _
>> "SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE " & _
>> "TargetInstance ISA 'CIM_DirectoryContainsFile' AND " & _
>> "TargetInstance.GroupComponent = 'Win32_Directory.Name=""" & Replace(strSourceFolder,
>> )
>>
Отсутствует закрывающая ")" в выражении.
строка:2 знак:5
+ <<<< "SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE " & _
+ CategoryInfo : ParserError: (CloseParenToken:TokenId) [], ParentContainsErrorR
+ FullyQualifiedErrorId : MissingEndParenthesisInExpression

PS F:\Users\Admin> Do
>> With objSWbemServicesEx.Get(objSWbemEventSource.NextEvent.TargetInstance.PartComponent
>> If MsgBox("Хотите открыть файл?", vbQuestion & vbOKCancel, "Cоздан новый файл [" &
>> WScript.CreateObject("Shell.Application").ShellExecute .Name
>> End If
>> End With
>> Loop
>>
Отсутствует тело инструкции в цикле do.
строка:2 знак:5
+ <<<< With objSWbemServicesEx.Get(objSWbemEventSource.NextEvent.TargetInstance.PartComp
+ CategoryInfo : ParserError: (do:String) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingLoopStatement

PS F:\Users\Admin> WScript.Quit 0

Отправлено: 16:19, 21-07-2014 | #9


Ветеран


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

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


Цитата dinovasya@vk:
Вот что выходит
PS F:\Users\Admin> Option Explicit
Имя "Option" не распознано как имя командлета, функции, файла скрипта или выполняемой програм
написания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:7
+ Option <<<< Explicit »
Смотрим на заголовок темы:
Цитата daniil98797:
VBS/WSH/JS - [решено] Проверка изменений папки, при обнаружении - архивирование/копирование. »
Выложенный мною код — WSH, на VBScript. Посему требуется его сохранить в файл с расширением «.vbs», указав вместо выделенного Вашу реальную папку, и запускать его, например, двойным щелчком из-под Проводника.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:48, 21-07-2014 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
VBA - Архивирование папки в папке %temp% Dark_Timur Программирование и базы данных 3 03-07-2012 13:42
Драйвер - Тормоза при обнаружении сетевой карты. vsnoise Microsoft Windows 2000/XP 1 16-06-2011 21:48
Интерфейс - При подключении динамиков к материнке нет сообщения об обнаружении p.p. Microsoft Windows 2000/XP 1 20-12-2010 06:58
Ошибка - Не видно изменений внутри папки roniro Microsoft Windows 2000/XP 3 28-07-2008 19:48
Delphi - копирование+архивирование Any Программирование и базы данных 4 23-07-2008 12:45




 
Переход