Показать полную графическую версию : [решено] Скрипт для удаления старых файлов и папок из определенной папки
lipro122
17-05-2013, 09:02
P.S. Лучше сразу заиметь привычку заключать пути в качестве аргументов скриптов WSH в кавычки, независимо от наличия в них пробелов. Привыкнете — станете делать сие автоматически. »
Привыкну ))) .. мне так удобнее )))... спасибо большое.
artem_cher
26-09-2013, 10:28
Здравствуйте, можете мне кто нито помочь? Ситуация такая, нужен скрипт или программка которая будет удалять вложенные папки с файлами из рабочей директории. То есть имеется сервер на котором делается бэкап, (e:/backup) в этой директории создается папка с датой создания>туда копируется дамп базы, и после этого он в ней архивируется в rar архив. Но есть одно но, иногда дамп снимается с ошибками и он не архивируется или недоорхивируется, нужно что бы скрипт проверял перед удалением папки, что бы всегда в директории оставалась последний актуальный бэкап. (По хорошему завершению бэкапа, в папке с датой остается один файл Export.rar, если что то не так в папке много файлов).
artem_cher, хорошо бы изложить то же самое, но по-русски.
Добрый день!
Подниму старую тему)!
Необходимо для этой части кода
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
Спасибо!
Добавить рекурсивное удаление файлов во всех вложенных папках переменной 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
Добрый день, нужен скрипт или программа, ну или другое решение для следующей ситуации: IP камера записывает видеофайлы и файлы log в расшаренную папку на одном из компов в сети, данные файлы записываются в папку имеющую название в виде даты, в ней создаются папки с названием равным текущем времени, в данные папки соответственно записываются видеозаписи и файлы лог. Требуется, чтобы раз в 3-4 дня удалялась самая старая папка (места на диске мало и когда оно кончается, видео перестает писаться). Также, хотелось бы, чтобы из общей папки, где создаются все эти файлы и папки удалялись файлы *.log (эти файлы создаются, когда камера фиксирует движение и их достаточно много).
Может ли кто помочь в решении данного вопроса?
Подскажите, пожалуйста можно ли автоматизировать вот это действие:
Windows7, в которой 20 пользователей, раз в неделю нужно на каждой из них почистить папки - C:\Users\userNNN\AppData\Local\Temp для каждого пользователя(имя пользователей в формате user_NNN)
У меня была вот такая мысль - создать cmd файл, в нем forfiles.exe /p %temp% /s /m *.* /d -14 /c "cmd /c del /q /f @file"
Вместо %temp% написать путь к каждой папке которую надо почистить и создать сценарий как тут - https://www.youtube.com/watch?v=-l24UCfQ7Cg который будет при выходе из системы или перезагрузке чистить папки пользователей.
Может есть еще подсказки/идеи?
Спасибо
Например, назначьте групповой политикой на 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
'=============================================================================
Здравствуйте, господа.
Во-первых, хочу поблагодарить за данные скрипты, особенно за:
On Error Resume Next
intDays = Int(Wscript.arguments.Item(0))
strFldr = Wscript.arguments.Item(1)
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
WScript.Echo oI.Path
oI.Attributes = 0
oI.Delete
End If
Next
For Each oI In cD
DelOld oI.Path, iDays
If oI.Size = 0 Then
oI.Attributes = 0
oI.Delete
End If
Next
End Function
Во-вторых, прошу Вас его улучшить вот в каком плане.
Сейчас для выполнения вышеозначенного кода я использую для очистки папки "Загрузки" вот такую команду:
cscript //Nologo c:\scripts\MyCleanUp.VBS 30 %USERPROFILE%\Downloads > c:\scripts\MyCleanupScript_Downloads.Log
Что в принципе, не правильно, так как значение пути к папке "Загрузки" можно изменить на любое, и куда она точно ссылается можно определить только из реестра:
"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
Значение параметра: {374DE290-123F-4565-9164-39C4925E467B}
Можно ли дополнить команду запуска, либо сам скрипт так, чтобы путь к папке "Загрузки" подставлялся автоматически из реестра, а ещё лучше, что-то типа:
cscript //Nologo c:\scripts\MyCleanUp.VBS 30 c:\scripts\ПапкиДляОчистки.list > c:\scripts\MyCleanupScript.Log
где ПапкиДляОчистки.list -- текстовый файл с перечнем папок, которые надо чистить, например:
%temp%
%windir%\temp
%USERPROFILE%\Downloads
Заранее благодарю
corecore
07-01-2023, 18:50
скажите, есть папка в которой создаються автоматически подпапки с файлами, которые нужно что бы удалялись все файлы старее 1 часа по дате изменения каждого файла, какой скрипт будет, что бы он работал сам без перезапусков, планировщиков и т.д., например с таймером в тот же самый один час.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.