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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - скрипт по копирвоанию и последующего удаления файлов по маске названия файла

Ответить
Настройки темы
Любой язык - скрипт по копирвоанию и последующего удаления файлов по маске названия файла

Старожил


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

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


день добрый!
задача скрипта такая: есть несколько папок на разных ресурсах. туда делаются скл бэкапы. название бэкапов типа "ххх_backup_2013_08_27_020001_6443075.bak"
нужно что бы со всех этих папок собирались крайние бэкапы в одну папку и через сутки удалялись перед те, как туда будут копироваться новые файлы
ЗЫ с этой папки через синхронизатор какойнить будут забираться эти файлы

подскажите скрипт, в этом не силен вообще

Отправлено: 09:49, 15-11-2013

 

Старожил


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

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


еще раз перепроверил: в папке(имя на латинице) лежит один файл name.bak, копирует в папку (названа тоже на латинице) без проблем. но стоит любую папку переименовать на русский... и все, батник не работает. переименовываю назад все, на латиницу-работает.

Отправлено: 15:14, 25-12-2013 | #11



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

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


Ветеран


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

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


Начнём с такого вопроса: в какой кодировке у Вас сохранён пакетный файл?

Отправлено: 15:42, 25-12-2013 | #12


Старожил


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

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


изначально был в ANSI
потом в юникод, ютф-8

Отправлено: 16:53, 25-12-2013 | #13


Ветеран


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

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


Цитата santey007:
изначально был в ANSI
потом в юникод, ютф-8 »
А надо — в OEM/866.
Это сообщение посчитали полезным следующие участники:

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


Старожил


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

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


Iska все здорово, кодировку исправил, копирует нормально, по сети работает тоже хорошо.
теперь второй батник, что бы он например через 36 часов удалял старый файл(наверно можно поставить выполнение батника по времени, например раз в день или два дня), оставляя только самый новый из папки "E:\Песочница\0334\Destination\"
т.е. в папке Destination за 36 часов накопится 2-3 файла, надо что бы он оставил только один, самый новый по дате создания. как реализовать?

Отправлено: 10:13, 26-12-2013 | #15


Ветеран


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

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


santey007, от какого момента нужно отсчитывать эти 36 часов?

Отправлено: 14:23, 26-12-2013 | #16


Старожил


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

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


Iska от момента когда в папке Destination будет более одного файла

Последний раз редактировалось santey007, 27-12-2013 в 08:48.


Отправлено: 08:42, 27-12-2013 | #17


Старожил


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

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


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

Отправлено: 09:52, 31-12-2013 | #18


Ветеран


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

Профиль | Отправить 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


Старожил


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

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


подниму темку, ситуация немного изменилась, вернее тех задание. нужно все тоже самое, НО чтоб копировал на фтп
1-копирование крайнего по дате бэкапа скл, маска такая base_backup_2013_08_27_020001_6443075.bak на фтп
2-раз в неделю чистка бэкапов на фтп-ке, т.е. удаляем все, кроме самого крайнего по дате

я понимаю что на wsh легко наверняка подправить, но не силен в этом вообще

Отправлено: 10:43, 22-12-2015 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - скрипт по копирвоанию и последующего удаления файлов по маске названия файла

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Нужен bat-ник для поиска и удаления файлов и папок по маске Nun-Nun Скриптовые языки администрирования Windows 14 08-11-2014 09:53
Интернет - Сортировка файлов в проводнике по дате названия файла VbInt Microsoft Windows 7 7 15-11-2013 10:33
CMD/BAT - создать Пакетный файл, предназначенный для удаления файлов по маске, расположенных в Sew12 Скриптовые языки администрирования Windows 2 21-11-2012 05:42
VBS/WSH/JS - Помогите пожалуйста. Скрипт Удаления файлов старше 60 дней, исключая файлы по маске KitsuNeko Скриптовые языки администрирования Windows 3 29-08-2012 13:55
CMD/BAT - [решено] Скрипт сортировки и копирования файлов по маске Daemonstar Скриптовые языки администрирования Windows 2 25-09-2010 15:47




 
Переход