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

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

Ответить
Настройки темы
VBS/WSH/JS - [решено] Скрипт для удаления старых файлов и папок из определенной папки

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


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

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


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

Если кто то сможет помочь заранее огромное спаибо !!!!!!!!!!!

Пример скрипта:

Код: Выделить весь код
RunForFiles "C:\Test\" 'файлы, среди которых будет производиться поиск устаревших, лежат в этой директории

Function RunForFiles(folderspec)
   Dim fso, f, f1, fc

   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(folderspec)
   Set fc = f.Files
   For Each f1 in fc
WScript.Echo (folderspec & f1.name) 'вывод сообщения с именем файла, который будет удален. используется в тестовых целях, в рабочем скрипте нужно отключить
      If CompareDate(folderspec & f1.name) = True Then Log(folderspec & f1.name)
'DelFile(folderspec & f1.name) 'удалить файл. сейчас удаление отключено для отладки.
   Next
End Function

'***************************************************************
'Возвращает True, если дата создания файла больше 14-ти дней
Function CompareDate(strFileName)
   Dim fso, f, s, i
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile(strFileName)

   i = DateDiff("d", f.DateCreated, Now)

   If i > 14 Then 'здесь указывается количество дней, которое используется для сравнения с датой создания файла, т.е., в этом примере удаляются все файлы, созданные раньше, чем 14 дней назад
      'WScript.Echo(strFileName&" "&i) 'вывести имя файла и его возраст, используется для отладки
      CompareDate = True
   Else
      CompareDate = False
   End If
End Function

'****************************************************************
'функция для извлечения пути
Function ExpandPath(strFullFileName)
   ExpandPath = Left(strFullFileName,instrrev(strFullFileName,"\"))
End Function

'***************************************************************
Function DelFile(strFullFileName)
Dim fso, F
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set F = fso.GetFile(strFullFileName)
   F.Delete
End Function

'****************************************************************
'функция для создания log-файла. он создается рядом со скриптом, имя - дата запуска скрипта.
Function Log(strLineToLog)
   Const ForReading = 1, ForWriting = 2
   Dim fso, f, r, FileLog
   r = ""

   FileLog = Left(WScript.ScriptName,(Len(WScript.ScriptName)-4)) & "_" & DatePart("yyyy",Date) & "_" & DatePart("m",Date) & "_" & DatePart("d",Date) & "." & "log"
   Set fso = CreateObject("Scripting.FileSystemObject")

   If (fso.FileExists(FileLog)) Then
      Set f = fso.OpenTextFile(FileLog, Forreading, True)
      r = f.Readall
      f.Close
      Set f = fso.OpenTextFile(FileLog, ForWriting, True)
      f.Write strLineToLog & vbCrLf & r
      f.Close
   Else
      Set f = fso.OpenTextFile(FileLog, ForWriting, True)
      f.Write strLineToLog
      f.Close
   End If
End Function
Этот скрипт удалит в указанной папке все файлы, которые были созданы 14 и больше дней назад.

Отправлено: 13:39, 25-07-2009

 

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


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

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


Цитата Iska:
P.S. Лучше сразу заиметь привычку заключать пути в качестве аргументов скриптов WSH в кавычки, независимо от наличия в них пробелов. Привыкнете — станете делать сие автоматически. »
Привыкну ))) .. мне так удобнее )))... спасибо большое.

Отправлено: 09:02, 17-05-2013 | #61



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

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


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


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

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


Здравствуйте, можете мне кто нито помочь? Ситуация такая, нужен скрипт или программка которая будет удалять вложенные папки с файлами из рабочей директории. То есть имеется сервер на котором делается бэкап, (e:/backup) в этой директории создается папка с датой создания>туда копируется дамп базы, и после этого он в ней архивируется в rar архив. Но есть одно но, иногда дамп снимается с ошибками и он не архивируется или недоорхивируется, нужно что бы скрипт проверял перед удалением папки, что бы всегда в директории оставалась последний актуальный бэкап. (По хорошему завершению бэкапа, в папке с датой остается один файл Export.rar, если что то не так в папке много файлов).

Отправлено: 10:28, 26-09-2013 | #62


Ветеран


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

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


artem_cher, хорошо бы изложить то же самое, но по-русски.

Отправлено: 12:47, 26-09-2013 | #63


Пользователь


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

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


Добрый день!
Подниму старую тему)!
Необходимо для этой части кода
Код: Выделить весь код
intDays = Int(Wscript.arguments.Item(0))
strFldr = Wscript.arguments.Item(1)

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objDIR = objFSO.GetFolder(strFldr)
Set objCol = objDIR.Files

For Each objItem In objCol
   If DateDiff("d", objItem.DateLastModified, Now) > intDays Then objItem.Delete
Next
Добавить рекурсивное удаление файлов во всех вложенных папках переменной strFldr
Спасибо!

Отправлено: 16:28, 18-11-2015 | #64


Пользователь


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

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


Цитата zhuk09:
Добавить рекурсивное удаление файлов во всех вложенных папках переменной strFldr »
С этим вроде бы справились, для удаления только файлов, удалили строку
Код: Выделить весь код
If oI.Size = 0 Then oI.Delete
Сам скрипт выглядит так
Код: Выделить весь код
intDays = 1
strFldr = "D:\Work"

Set objFSO = CreateObject("Scripting.FileSystemObject")
DelOld strFldr, intDays

Function DelOld(sFldr, iDays)
On Error Resume Next
   Dim oD, cF, cD, oI

   Set oD = objFSO.GetFolder(sFldr)
   Set cF = oD.Files
   Set cD = oD.SubFolders

   For Each oI In cF
      If DateDiff("d", oI.DateLastModified, Now) > iDays Then oI.Delete
   Next

   For Each oI In cD
      DelOld oI.Path, iDays
      Next
End Function

Отправлено: 14:36, 23-11-2015 | #65


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


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

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


Добрый день, нужен скрипт или программа, ну или другое решение для следующей ситуации: IP камера записывает видеофайлы и файлы log в расшаренную папку на одном из компов в сети, данные файлы записываются в папку имеющую название в виде даты, в ней создаются папки с названием равным текущем времени, в данные папки соответственно записываются видеозаписи и файлы лог. Требуется, чтобы раз в 3-4 дня удалялась самая старая папка (места на диске мало и когда оно кончается, видео перестает писаться). Также, хотелось бы, чтобы из общей папки, где создаются все эти файлы и папки удалялись файлы *.log (эти файлы создаются, когда камера фиксирует движение и их достаточно много).
Может ли кто помочь в решении данного вопроса?

Отправлено: 13:06, 10-05-2016 | #66


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


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

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


Подскажите, пожалуйста можно ли автоматизировать вот это действие:
Windows7, в которой 20 пользователей, раз в неделю нужно на каждой из них почистить папки - C:\Users\userNNN\AppData\Local\Temp для каждого пользователя(имя пользователей в формате user_NNN)

Отправлено: 23:36, 07-06-2016 | #67


Ветеран


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

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


Dimu4, можно.

Отправлено: 23:55, 07-06-2016 | #68


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


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

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


У меня была вот такая мысль - создать cmd файл, в нем
Код: Выделить весь код
forfiles.exe /p %temp% /s /m *.* /d -14 /c "cmd /c del /q /f @file"
Вместо %temp% написать путь к каждой папке которую надо почистить и создать сценарий как тут - https://www.youtube.com/watch?v=-l24UCfQ7Cg который будет при выходе из системы или перезагрузке чистить папки пользователей.
Может есть еще подсказки/идеи?
Спасибо

Последний раз редактировалось Dimu4, 08-06-2016 в 00:49.


Отправлено: 00:23, 08-06-2016 | #69


Ветеран


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

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


Например, назначьте групповой политикой на Logout пользователям:
Скрытый текст
Код: Выделить весь код
Option Explicit

Const TemporaryFolder = 2
Const intDays2Live   = 30

Dim strPathToClear


With WScript.CreateObject("Scripting.FileSystemObject")
	strPathToClear = .GetSpecialFolder(TemporaryFolder)
	
	If .FolderExists(strPathToClear) Then
		ClearSubFolders .GetFolder(strPathToClear)
	Else
		WScript.Quit 1
	End If
End With

WScript.Quit 0
'=============================================================================

'=============================================================================
Sub ClearSubFolders(objFolder)
	Dim objSubFolder
	Dim objFile
	
	
	For Each objSubFolder In objFolder.SubFolders
		ClearSubFolders objSubFolder
	Next
	
	For Each objFile In objFolder.Files
		If DateDiff("d", objFile.DateLastModified, Now()) > intDays2Live Then
			objFile.Delete True
		End If
	Next
	
	If (objFolder.Files.Count = 0) And (objFolder.SubFolders.Count = 0) Then
		If objFolder.Path = strPathToClear Then
			' Nothing to do
		Else
			objFolder.Delete True
		End If
	End If
End Sub
'=============================================================================
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:58, 08-06-2016 | #70



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Помогите найти скрипт для удаленного удаления програм magwolf Скриптовые языки администрирования Windows 20 01-02-2016 23:35
Любой язык - нужен скрипт для удаления всех файлов кроме нужных для запуска Windows XP Dark Ange1 Скриптовые языки администрирования Windows 11 07-03-2010 13:34
[решено] Скрипт для удаления нужных слов в ini файле Pozia AutoIt 23 27-10-2009 18:42
CMD/BAT - [решено] Создание CMD/BAT файла для удаления лишних папок Vsirf Скриптовые языки администрирования Windows 4 04-06-2009 20:37
Скрипт для удаления директорий dallas Программирование и базы данных 5 15-01-2003 19:28




 
Переход