это мой первый скрипт, так что не ругайтесь!!!!
цель- определение свободного дискового пространства и отсылка почтового сообщения, если его меньше определенного значения.
проблема - срабатывает через раз и, кроме того, я не могу запустить его из командной строки: не удается найти указанный файл
Разъясните, в чем ошибка...
Option Explicit
Const ForWriting = 2
Dim FreeSize
FreeSize = 10
Dim strDrive
strDrive = ("D:")
Call DriveSpace ("D:")
Call RunCommand ("smail.exe smail.ini")
'''''''''''''''''''''''''''''''''''''''''''''''
Dim objArgs
Set objArgs = WScript.Arguments.Named
If objArgs.Count <> 2 Then
WScript.Echo "/host:[mailserver] /to:[e-mail address]" '/mess:[message]
WScript.Quit
End If
Dim strHost, strToAddress ', strmess
strHost = objArgs.Item("host")
strToAddress = objArgs.Item ("to")
' strMess = objArgs.Item ("mess")
Dim FSO, f, objDrive, DrvFreeSpace, DrvTotalSpace
Set FSO = CreateObject("Scripting.FileSystemObject")
Set f = FSO.OpenTextFile ("smail.ini", ForWriting, True)
Set objDrive = FSO.GetDrive (strDrive)
DrvFreeSpace = FormatNumber(objDrive.FreeSpace/(1024*1024), 0)
DrvTotalSpace = FormatNumber(objDrive.TotalSize/(1024*1024), 0)
f.writeline "[Connection]"
f.writeline "Host=" & strHost
f.writeline "Port=25"
f.writeline "[PostMessage]"
f.writeline "Charset=Windows-1251"
f.writeline "fromAddress= smail@freespace.ru"
f.writeline "Subject="
f.WriteLine "ToAddress=" & strToAddress
f.WriteLine "[Body]"
f.WriteLine "Line0=" & "На диске" & VbCrLf & strDrive & VbCrLf & "осталось мало места:"
f.WriteLine "Line1=" & "Volume Total Size:"& DrvTotalSpace
f.WriteLine "Line2=" & "Volume Free Space:" & DrvFreeSpace
f.Close
f = FSO.DeleteFile ("smail.ini")
''''''''''''''''''''''''''''''''''''''''''''''''''
Sub DriveSpace (strDrive)
Dim FSO, objDrive, DrvFreeSpace, DrvTotalSpace, FreeSize
Set FSO = WScript.CreateObject ("Scripting.FileSystemObject")
Set objDrive = FSO.GetDrive (strDrive)
DrvFreeSpace = FormatNumber(objDrive.FreeSpace/(1024*1024), 0)
DrvTotalSpace = FormatNumber(objDrive.TotalSize/(1024*1024), 0)
If DrvFreeSpace <= FreeSize Then
Call RunCommand (strCommand)
End If
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function RunCommand (strCommand)
Dim WshShell, objExec, strStream
Set WshShell = CreateObject("WScript.Shell")
Set objExec = WshShell.Exec(strCommand)
If Not objExec.StdOut.AtEndOfStream Then
strStream = objExec.StdOut.ReadAll
End If
If Not objExec.StdErr.AtEndOfStream Then
strStream = "STDERR: " + objExec.StdErr.ReadAll
End If
Do While objExec.Status = 0
WScript.Sleep 200
Loop
RunCommand = objExec.ExitCode
End Function
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
WScript.Quit
Ответить
|