![]() |
Проверка изменений папки, при обнаружении - архивирование/копирование.
Собственно, сабж.
Нужен скрипт, проверяющий изменения папки. И при обнаружении архивирующий либо копирующий ее. Причем при каждом изменении, одно изменение = одна папка или архив. Заранее спасибо! |
Оказалось, что все решается очень просто. Создаем батник:
Код:
:again Код:
wscript.sleep wscript.arguments(0) Вот всегда так, полдня пытаешся что-то сделать, обращаешся за помощью на форум и сразу сам находишь решение. :) |
Усложним задачу.
Нужно чтоб при изменении данной папки, а именно создании в ней нового файла, на экране пользователя выходило сообщение: В папке создан новый файл с названием "......" Хотите открыть файл? и две кнопки ОК и Отмена ))) трудно так? |
Не трудно.
Но если открывать файл нечем? |
Ну там уже виндовс берет на себя задачу чем открывать..
Главное чтобы диалоговое окно появлялось, а чем открыть- уж пользователю на выбор или программа по умолчанию.. А че- серьезно чтоль можно и так сделать? |
|
![]() то есть такое окно не откроется? Ну а что тогда произойдет? давайте я попробую. чот куда вставить? |
|
Вот что выходит
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 |
Цитата:
Цитата:
|
спасибо.
Отлично работает, единственное что открывает 3 окна сразу.. создан новый файл, открыть файл.. |
вот положил неизвестного типа файл. в итоге как обычно выскочило 3 окна - нажал открыть- виндовс взял на себя процесс открытия о чем я и говорил..
![]() заметил 3 недостатка: 1) открывается окно три раза а не один 2) вместо локального адреса пробовал указывать сетевой- не сработал скрипт. вместо D:\open\test писал \\server\open\test (это сетевой адрес папки)- в итоге на другой машине не сработал скрипт. 3) если заменяю файл файлом с тем же именем, но другим содержанием скрипт молчит. Но впринципе проверки на изменения небыло.. |
Цитата:
Цитата:
Цитата:
Код:
strComputer = "." На сетевом ресурсе «\\server\open\test» работать не будет по той причине, что данный путь отсутствует в пространстве имён Wbem. Если подключите сетевой ресурс как диск — можете опробовать. Цитата:
Цитата:
|
![]() как только создаешь файл, сразу же появляются эти 3 окна с периодичностью примерно 2 секунды можно ли чтоб проверяло скажем так 1 раз в минуту ? в моей задаче требуется на нескольких компьютерах проверять наличие новых файлов в сетевой папке, только с подключением сетевого диска сработает? или можно всё-таки обойти подключение сетевых.. они иногда не восстанавливаются- не уверен я в сетевых дисках.. |
|
Цитата:
Цитата:
Цитата:
Цитата:
Код:
… |
нет, не получается, пробовал и ip компа и его имя и его порлное доменное имя- все сводится к этой ошибке при запуске скрипта
![]() |
|
strComputer = "server"
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") Set objSWbemServices = objSWbemLocator.ConnectServer _ (strComputer, "root\cimv2", "domen\administrator", "password") objSWbemServices.Security_.ImpersonationLevel = 3 |
Цитата:
|
Да ниче не получилось, доступ отказан, то сервис rpc недоступен..
короче вставлял эти строки в скрипт, изменяя на данные админа. Нет прав говорит, хотя права точно есть- к удаленному рабочему столу подключаюсь же.. короче на досуге повожусь еще.. |
dinovasya@vk, прочитайте перечень статей, доступных по ссылке из поста #18. Там достаточно подробно описано, как разрешить удалённое управление на машине, как его включить и настроить, как следует сконфигурировать фаерволл и т.п.
Если у Вас домен, если Вы на локальной машине зарегистрированы как доменный администратор, если у Вас на уровне домена отключён для внутренней сети, либо сконфигурирован фаерволл на машинах, если там же разрешено удалённое управление для машин — то Вам нет необходимости принудительно задавать свои или отличные от своих учётные данные в методе «.ConnectServer()», ибо по умолчанию и так будет использован Ваш токен доступа. |
я и надеялся что будет использован существующий доступ, т.к. все в доменной сети входят со своих машин под учетными записями, у которых есть права к этой папке.. ведь ни фаерволлы не блокируют доступ, никаких других проблем доступа нет, непонимаю почему если на этой машине можно открыть эту павпку, то через скрипт та же папка не может открыться из-за недостатка прав или блокировки.. Можно явно прописать в скрипте чтоб использовало уже существующие права пользователя, который залогинился уже на данном компьютере в доменной сети?
|
dinovasya@vk, к сожалению, действительно не понимаете. Wbem и SMB — это разные технологии. Мне добавить к уже изложенному выше нечего.
Используйте в таком случае подключения дисков к сетевым ресурсам и отслеживайте изменения на них. Цитата:
|
Цитата:
Спасибо за всё! |
Время: 01:43. |
Время: 01:43.
© OSzone.net 2001-