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

Показать сообщение отдельно

Ветеран


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

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


Цитата santey007:
я уж там в задании поставлю время »
Где «в задании»? Каким образом задание сможет определить момент:
Цитата santey007:
когда в папке Destination будет более одного файла »


Реализовать можно на WSH:
читать дальше »
Код: Выделить весь код
Option Explicit

Const adDate    =   7
Const adVarChar = 200


Dim strSourceFolder

Dim objFSO
Dim objFile

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim collSWbemObjectSet
Dim objSWbemObjectEx


strSourceFolder = "E:\Песочница\0334\Destination"

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

If objFSO.FolderExists(strSourceFolder) Then
	strComputer = "."
	
	Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
	Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
	
	Set collSWbemObjectSet = objSWbemServicesEx.ExecNotificationQuery( _
		"SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE " &_
		"TargetInstance ISA 'CIM_DirectoryContainsFile' AND " &_
		"TargetInstance.GroupComponent = 'Win32_Directory.Name=""" & Replace(strSourceFolder, "\", "\\\\") & """'" _
	)
	
	Do
		Set objSWbemObjectEx = collSWbemObjectSet.NextEvent
		
		If objFSO.GetFolder(strSourceFolder).Files.Count > 1 Then
			Exit Do
		End If
	Loop
	
	WScript.Sleep 1000 * 60 * 60 ' 36 часов
	
	With WScript.CreateObject("ADODB.Recordset")
		With .Fields
			.Append "Path",        adVarChar, 2^15 - 1
			.Append "DateCreated", adDate
		End With
		
		.Open
		.Sort = "DateCreated DESC"
		
		For Each objFile In objFSO.GetFolder(strSourceFolder).Files
			.AddNew Array("Path", "DateCreated"), Array(objFile.Path, objFile.DateCreated)
		Next
		
		If .RecordCount >= 2 Then
			.MoveFirst
			.MoveNext
			
			Do Until .EOF
				With .Fields
					objFSO.DeleteFile .Item("Path").Value, True
				End With
				
				.MoveNext
			Loop
		Else
			' Nothing to do
		End If
		
		.Close
	End With
	
	Set objSWbemObjectEx   = Nothing
	Set collSWbemObjectSet = Nothing
	Set objSWbemServicesEx = Nothing
	Set objSWbemLocator    = Nothing
Else
	WScript.Echo "Source folder [" & strSourceFolder & "] not found."
	WScript.Quit 1
End If

Set objFSO = Nothing

WScript.Quit 0

но смысла в подобной организации автоматизации я не вижу ни малейшего.
Это сообщение посчитали полезным следующие участники:

Отправлено: 00:43, 06-01-2014 | #19