RU | EN | UA

Tip: Удаляем Файлы через vbScript

Версия для печати Отправить на e-mail
Tag it:
Digg
Technorati
YahooMyWeb
Delicious
blogmarks
Среда, 12 Апрель 2006 | (7108)

Delete Fails - N-Admin.com -Administrating Tips and TricksЧастенько, Системный Администратор сталкивается с ситуацией, когда надо периодически удалять старые файлы. Как правило, это какие-нибудь логи (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.

Скачать

Вольный перевод с сайта: http://vbskrypt.com
 

Комментарии

  1. Цитировать #12 Роман
    2006-07-0301:14:11 Привет ! Помогите.
    Как прочитать файл , который линк (***.lnk)
    и вынуть из него путь к ресурсу.
    Ответ писать на мыло: romankn@bezeqint.net
  2. Цитировать #11 Djohn
    2006-06-1317:13:23 sankadubinin, Мне надо, отправь плизз, на admin003048@048.pfr.ru
  3. Цитировать #10 ssn
    2006-04-2607:52:52 Если у кого что есть по этому или вообще какие нибудь соображения, поделитесь плз.
  4. Цитировать #9 ssn
    2006-04-2607:52:42 И еще у меня такой вопрос-просьба ко всем знающим. Есть ли у кого скрипты, которые создают экаунт в доменной сети; создает mailbox экаунт; добавляет SMTP адрес для mailbox-а и делает его дефолтным; удаляет драйвер сетевого принтера на локальной станции???
  5. Цитировать #8 ssn
    2006-04-2607:52:16 Привет! Скрипт просто супер! Sankadubinin, если не трудно скинь мне на мыло свой скрипт strizhakovs@mail.ru
  6. Цитировать #7 pelekan
    2006-04-1212:03:28 sankadubinin, если не трудно, скинь скрипт мне на мыло, в текстовом файле, я его поставлю на сервер, что бы народ мог скачивать.
  7. Цитировать #6 Pelekan
    2006-04-1211:56:43 2 sankadubinin, THX
  8. Цитировать #5 sankadubinin
    2006-04-1211:48:33 :D
    Правильно сделал. Не тривиальная задача под Виндой. Новость сделал. Всем желаю пользоваться наздоровье и не писать заново, как пришлось это сделать мне. Удачи! Если у кого возникнут вопросы, отвечу.
  9. Цитировать #4 Pelekan
    2006-04-1211:37:52 Только сделал перевод статьи. это можно и на винде сделать, только не так просто как в *nix. Сам, когда увидил этот скрипт, порадовался и решил запостить его на сайте.
  10. Цитировать #3 sankadubinin
    2006-04-1211:26:06 В своё время очень долго искал что-то подбное. Пришлось написать самому. Программ каких-либо подобных просто нет, с помощью командной строки в Windows это сделать невозможно (под *nix-системами это делается одной строчкой). Пост полезный и хороший. Автору респект.

Добавить комментарий

Жирный Курсив Подчеркнутый Ссылка Цитата


Автотранслитерация: выключена

Защитный код

Powered by jComments
Created by Pelican Design Studio - Web 2 You / Hosting by TheystemAdministrator.com / Tech. Support ITStuff.ca - Tips and Tricks for IT Stuff / Фин. Спонсор WEX
Templates by Pelican Web Studio Templates by Pelican Web Design Studio