Tip: Удаляем Файлы через vbScript
|
|
|
Среда, 12 Апрель 2006 | (7108)
Частенько, Системный Администратор сталкивается с ситуацией, когда надо периодически удалять старые файлы. Как правило, это какие-нибудь логи (logs) или ещё чего-нибудь. Каждый системный администратор находит для себя своё решение для этой задачи. Покажу вам ещё один способ,который сам недавно нашёл. Небольшой скрипт, удаляет (Delete) из указанной директории, файлы, к которым не-было обращения больше 7 дней.
СОВЕТУЮ ОЧЕНЬ ВНИМАТЕЛЬНО Изучить ЭТОТ СКРИПТ.
Запускать данный скрипт надо так: cscript.exe deleteOld.vbs
Содержимое скрипта:
'==========================================================================
'On Error Resume Next
Option Explicit
Const ForReading = 1 ' used to open the file in read only mode
Const ForWriting = 2 ' used to write to the file, overwriting any pre-existing data
Const ForAppending = 8 ' used to write to the file, adding to existing data without overwriting it.
Dim oFile, oLogFile, oFolder, oFSO, oFSO2
Dim sFullPath
Dim curDate, thisDate, lastDate
Dim nDays
' Set this path to the folder you wish to scan
' for outdated files.
sFullPath = "H:\MyOldFileFolder"
' Create the FileSystemObject
Set oFSO = CreateObject("Scripting.FileSystemObject")
' retrieve the current Date
curDate = Now()
thisDate = Date
' Create Log File
Set oFSO2 = CreateObject("Scripting.FileSystemObject")
Set oLogFile = oFSO2.CreateTextFile(thisDate & ".log", True)
' Check to be sure that the Folder exists before
' continuing on
If oFSO.FolderExists(sFullPath) Then
Set oFolder = oFSO.GetFolder(sFullPath)
' Scan each file in the folder
For Each oFile In oFolder.Files
' this is the last date the file was accessed
lastDate = oFile.DateLastAccessed
' Get the difference In days between the two dates
nDays = DateDiff("d",lastDate,curDate)
'MsgBox nDays
' If the number of days is greater than 7
' delete the file.
If (nDays > 7) Then
' Write out the deleted file info to Standard Out
WScript.Echo "File Name: " & oFile.Name
WScript.Echo "It has been " & nDays & " days since this file has been accessed"
WScript.Echo "Last Accessed: " & oFile.DateLastAccessed
WScript.Echo "** " & oFile.Name & " Will be deleted. **"
' Write out the deleted file info to a log file
oLogFile.WriteLine("File Name: " & oFile.Name)
oLogFile.WriteLine("It has been " & nDays & " days since this file has been accessed")
oLogFile.WriteLine("Last Accessed: " & oFile.DateLastAccessed)
oLogFile.WriteLine("** " & oFile.Name & " Will be deleted. **")
' Delete the file
oFSO.DeleteFile(sFullPath & "\" & oFile.Name)
' check for an error deleting the file
If Err.Number = 0 Then
' Write the success to Standard Out
WScript.Echo "Deleted successfully"
WScript.Echo
' Write the success to the log file for reference
oLogFile.WriteLine "Deleted successfully"
oLogFile.WriteBlankLines(1)
Else
' Write the error to Standard Out
WScript.Echo "An Error Occurred While Deleting " & oFile.Name
WScript.Echo "Error Number: " & Err.Number
WScript.Echo
' Write the error to the log file for reference
oLogFile.WriteLine "An Error Occurred While Deleting " & oFile.Name
oLogFile.WriteLine "Error Number: " & Err.Number
oLogFile.WriteBlankLines(1)
End If
' do nothing to the file and continue on
Else
WScript.Echo oFile.Name & " was accessed " & nDays & " day(s) ago."
WScript.Echo "nothing to do, continue scan..."
WScript.Echo
End if
' Continue to loop through the rest of the files
Next
' close the log file
oLogFile.Close
End If
|
Вы можете скчать этот скрипт в текстовом формате, только не забудьте переименовать файл, что бы у него было расширение VBS.
Скачать
|
Комментарии
2006-07-0301:14:11 Привет ! Помогите.
Как прочитать файл , который линк (***.lnk)
и вынуть из него путь к ресурсу.
Ответ писать на мыло: romankn@bezeqint.net
2006-06-1317:13:23 sankadubinin, Мне надо, отправь плизз, на admin003048@048.pfr.ru
2006-04-2607:52:52 Если у кого что есть по этому или вообще какие нибудь соображения, поделитесь плз.
2006-04-2607:52:42 И еще у меня такой вопрос-просьба ко всем знающим. Есть ли у кого скрипты, которые создают экаунт в доменной сети; создает mailbox экаунт; добавляет SMTP адрес для mailbox-а и делает его дефолтным; удаляет драйвер сетевого принтера на локальной станции???
2006-04-2607:52:16 Привет! Скрипт просто супер! Sankadubinin, если не трудно скинь мне на мыло свой скрипт strizhakovs@mail.ru
2006-04-1212:03:28 sankadubinin, если не трудно, скинь скрипт мне на мыло, в текстовом файле, я его поставлю на сервер, что бы народ мог скачивать.
2006-04-1211:56:43 2 sankadubinin, THX
2006-04-1211:48:33 :D
Правильно сделал. Не тривиальная задача под Виндой. Новость сделал. Всем желаю пользоваться наздоровье и не писать заново, как пришлось это сделать мне. Удачи! Если у кого возникнут вопросы, отвечу.
2006-04-1211:37:52 Только сделал перевод статьи. это можно и на винде сделать, только не так просто как в *nix. Сам, когда увидил этот скрипт, порадовался и решил запостить его на сайте.
2006-04-1211:26:06 В своё время очень долго искал что-то подбное. Пришлось написать самому. Программ каких-либо подобных просто нет, с помощью командной строки в Windows это сделать невозможно (под *nix-системами это делается одной строчкой). Пост полезный и хороший. Автору респект.