我不太懂vb,请教各位如下问题
在注释:“如果正确”后面部分代码每次都不执行,
shell中的部分也没有执行
请各位帮我看看这段程序还有什么问题
程序思路:判断在某个特定目录下是否有指定文件,如果没有则生成一个报警文件,有则生成状态文件,然后ping 一个地址,如果通则把alert和state文件ftp到这个机器上。Private Sub Timer_Seek_Timer()
Static Seek_StarTime As Date
If Seek_Start_Flag = False Then
Seek_StarTime = DateAdd("N", word_list.Item(13), Time)
Seek_Start_Flag = True
End If
If Seek_Start_Flag = True Then
If Time >= Seek_StarTime Then
Dim FileNumber As Integer
Dim file_line As String
Dim result_file As String
Dim i As Integer
Dim GST_date As Date
Dim Val_GST_day As Integer
Dim Val_GST_hour As Integer
Dim Str_GST_day As String
Dim Str_GST_hour As String
Dim Str_day As String
Dim Str_hour As String
Dim Str_minute As String
Dim FileName As String
Dim Find_Result As Boolean
Dim Find_File As String
Dim str_ftp As String
Find_Result = False
Find_File = ""
ChDrive ("C:")
ChDir (word_list.Item(4))
GST_date = DateAdd("H", -8, Date & Space(1) & Time)
Val_GST_day = Day(GST_date)
Val_GST_hour = Hour(GST_date)
If Val_GST_day < 10 Then
Str_GST_day = "0" & Trim(Str(Val_GST_day))
Else
Str_GST_day = Trim(Str(Val_GST_day))
End If
If Val_GST_hour < 10 Then
Str_GST_hour = "0" & Trim(Str(Val_GST_hour))
Else
Str_GST_hour = Trim(Str(Val_GST_hour))
End If
FileName = HB & Str_GST_day & Str_GST_hour & Str_30 & EHB
Find_File = Dir(FileName, vbNormal)
If Find_File = FileName Then
Find_Result = True
Exit Sub
End If
FileName = HB & Str_GST_day & Str_GST_hour & Str_40 & EHB Find_File = Dir(FileName, vbNormal)
If Find_File = FileName Then
Find_Result = True
Exit Sub
End If
FileName = HB & Str_GST_day & Str_GST_hour & Str_50 & EHB Find_File = Dir(FileName, vbNormal)
If Find_File = FileName Then
Find_Result = True
Exit Sub
End If
'/
'查找文件代码结束
'/
'/
'/报警文件生成代码开始
ChDrive ("C:")
ChDir (word_list.Item(7))
'/如果结果错误
If Find_Result = False Then
FileNumber = FreeFile
If Day(Date) < 10 Then
Str_day = "0" & Day(Date)
Else
Str_day = Day(Date)
End If
If Hour(Time) < 10 Then
Str_hour = "0" & Hour(Time)
Else
Str_hour = Hour(Time)
End If
If Minute(Time) < 10 Then
Str_minute = "0" & Minute(Time)
Else
Str_minute = Minute(Time)
End If
FileName = "A" & Str_day & Str_hour & Str_minute & "." & word_list.Item(8)
Open FileName For Output As FileNumber
Print #FileNumber, word_list.Item(8) & comma & word_list.Item(12) & comma & word_list.Item(1) & comma & word_list.Item(2) & Str_error & comma & Date & comma & Time
Close FileNumber
FileNumber = FreeFile
Open "sendfile" For Output As FileNumber
Print #FileNumber, "open " & word_list.Item(3)
Print #FileNumber, "xxr2"
Print #FileNumber, "xxr2"
Print #FileNumber, "cd /"
Print #FileNumber, "cd " & word_list.Item(5)
Print #FileNumber, "lcd " & word_list.Item(7)
Print #FileNumber, "asc"
Print #FileNumber, "prompt"
Print #FileNumber, "put " & FileName
Print #FileNumber, "bye"
Close FileNumber
ChDrive ("C:")
ChDir (word_list.Item(7))
FileNumber = FreeFile
Open "pingip.bat" For Output As FileNumber
Print #FileNumber, "ping " & word_list.Item(3) & " > " & word_list.Item(9) & "result.txt"
Close FileNumber
Shell (pingip.bat)
ChDrive ("c:")
ChDir (word_list.Item(9))
FileNumber = FreeFile
Open "result.txt" For Input As FileNumber
Do While Not EOF(FileNumber)
Line Input #FileNumber, result_file
If InStr(1, result_file, "bytes from", vbTextCompare) > 0 Then
str_ftp = "ftp " & "-s " & word_list.Item(9) & "sendfile"
Shell (str_ftp)
End If
Loop
Close FileNumber
'/如果结果正确
Else
'/状态文件生成代码
FileNumber = FreeFile
If Day(Date) < 10 Then
Str_day = "0" & Day(Date)
Else
Str_day = Day(Date)
End If
If Hour(Time) < 10 Then
Str_hour = "0" & Hour(Time)
Else
Str_hour = Hour(Time)
End If
If Minute(Time) < 10 Then
Str_minute = "0" & Minute(Time)
Else
Str_minute = Minute(Time)
End If
FileName = "St" & Str_day & Str_hour & Str_minute & "." & word_list.Item(9)
Open FileName For Output As FileNumber
Print #FileNumber, word_list.Item(1) & comma & Sta_right & comma & word_list.Item(10) & comma & word_list.Item(11) & Date & comma & Time & comma & Explain
Close FileNumber
FileNumber = FreeFile
Open "sendfile" For Output As FileNumber
Print #FileNumber, "open " & word_list.Item(3)
Print #FileNumber, "xxr2"
Print #FileNumber, "xxr2"
Print #FileNumber, "cd /"
Print #FileNumber, "cd " & word_list.Item(6)
Print #FileNumber, "lcd " & word_list.Item(7)
Print #FileNumber, "sci"
Print #FileNumber, "prompt"
Print #FileNumber, "put " & FileName
Print #FileNumber, "bye"
Close FileNumber
ChDrive ("C:")
ChDir (word_list.Item(10))
FileNumber = FreeFile
Open "pingip.bat" For Output As FileNumber
Print #FileNumber, "ping " & word_list.Item(3) & " > " & word_list.Item(9) & "result.txt"
Close FileNumber
Shell ("pingip.bat")
ChDrive ("c:")
ChDir (word_list.Item(7))
FileNumber = FreeFile
Open "result.txt" For Input As FileNumber
Do While Not EOF(FileNumber)
Line Input #FileNumber, result_file
If InStr(1, result_file, "bytes from", vbTextCompare) > 0 Then
str_ftp = "ftp " & "-s " & word_list.Item(9) & "sendfile"
Shell (str_ftp)
End If
Loop
Close FileNumber
End If
Seek_Start_Flag = False
End If
End If
End Sub
在注释:“如果正确”后面部分代码每次都不执行,
shell中的部分也没有执行
请各位帮我看看这段程序还有什么问题
程序思路:判断在某个特定目录下是否有指定文件,如果没有则生成一个报警文件,有则生成状态文件,然后ping 一个地址,如果通则把alert和state文件ftp到这个机器上。Private Sub Timer_Seek_Timer()
Static Seek_StarTime As Date
If Seek_Start_Flag = False Then
Seek_StarTime = DateAdd("N", word_list.Item(13), Time)
Seek_Start_Flag = True
End If
If Seek_Start_Flag = True Then
If Time >= Seek_StarTime Then
Dim FileNumber As Integer
Dim file_line As String
Dim result_file As String
Dim i As Integer
Dim GST_date As Date
Dim Val_GST_day As Integer
Dim Val_GST_hour As Integer
Dim Str_GST_day As String
Dim Str_GST_hour As String
Dim Str_day As String
Dim Str_hour As String
Dim Str_minute As String
Dim FileName As String
Dim Find_Result As Boolean
Dim Find_File As String
Dim str_ftp As String
Find_Result = False
Find_File = ""
ChDrive ("C:")
ChDir (word_list.Item(4))
GST_date = DateAdd("H", -8, Date & Space(1) & Time)
Val_GST_day = Day(GST_date)
Val_GST_hour = Hour(GST_date)
If Val_GST_day < 10 Then
Str_GST_day = "0" & Trim(Str(Val_GST_day))
Else
Str_GST_day = Trim(Str(Val_GST_day))
End If
If Val_GST_hour < 10 Then
Str_GST_hour = "0" & Trim(Str(Val_GST_hour))
Else
Str_GST_hour = Trim(Str(Val_GST_hour))
End If
FileName = HB & Str_GST_day & Str_GST_hour & Str_30 & EHB
Find_File = Dir(FileName, vbNormal)
If Find_File = FileName Then
Find_Result = True
Exit Sub
End If
FileName = HB & Str_GST_day & Str_GST_hour & Str_40 & EHB Find_File = Dir(FileName, vbNormal)
If Find_File = FileName Then
Find_Result = True
Exit Sub
End If
FileName = HB & Str_GST_day & Str_GST_hour & Str_50 & EHB Find_File = Dir(FileName, vbNormal)
If Find_File = FileName Then
Find_Result = True
Exit Sub
End If
'/
'查找文件代码结束
'/
'/
'/报警文件生成代码开始
ChDrive ("C:")
ChDir (word_list.Item(7))
'/如果结果错误
If Find_Result = False Then
FileNumber = FreeFile
If Day(Date) < 10 Then
Str_day = "0" & Day(Date)
Else
Str_day = Day(Date)
End If
If Hour(Time) < 10 Then
Str_hour = "0" & Hour(Time)
Else
Str_hour = Hour(Time)
End If
If Minute(Time) < 10 Then
Str_minute = "0" & Minute(Time)
Else
Str_minute = Minute(Time)
End If
FileName = "A" & Str_day & Str_hour & Str_minute & "." & word_list.Item(8)
Open FileName For Output As FileNumber
Print #FileNumber, word_list.Item(8) & comma & word_list.Item(12) & comma & word_list.Item(1) & comma & word_list.Item(2) & Str_error & comma & Date & comma & Time
Close FileNumber
FileNumber = FreeFile
Open "sendfile" For Output As FileNumber
Print #FileNumber, "open " & word_list.Item(3)
Print #FileNumber, "xxr2"
Print #FileNumber, "xxr2"
Print #FileNumber, "cd /"
Print #FileNumber, "cd " & word_list.Item(5)
Print #FileNumber, "lcd " & word_list.Item(7)
Print #FileNumber, "asc"
Print #FileNumber, "prompt"
Print #FileNumber, "put " & FileName
Print #FileNumber, "bye"
Close FileNumber
ChDrive ("C:")
ChDir (word_list.Item(7))
FileNumber = FreeFile
Open "pingip.bat" For Output As FileNumber
Print #FileNumber, "ping " & word_list.Item(3) & " > " & word_list.Item(9) & "result.txt"
Close FileNumber
Shell (pingip.bat)
ChDrive ("c:")
ChDir (word_list.Item(9))
FileNumber = FreeFile
Open "result.txt" For Input As FileNumber
Do While Not EOF(FileNumber)
Line Input #FileNumber, result_file
If InStr(1, result_file, "bytes from", vbTextCompare) > 0 Then
str_ftp = "ftp " & "-s " & word_list.Item(9) & "sendfile"
Shell (str_ftp)
End If
Loop
Close FileNumber
'/如果结果正确
Else
'/状态文件生成代码
FileNumber = FreeFile
If Day(Date) < 10 Then
Str_day = "0" & Day(Date)
Else
Str_day = Day(Date)
End If
If Hour(Time) < 10 Then
Str_hour = "0" & Hour(Time)
Else
Str_hour = Hour(Time)
End If
If Minute(Time) < 10 Then
Str_minute = "0" & Minute(Time)
Else
Str_minute = Minute(Time)
End If
FileName = "St" & Str_day & Str_hour & Str_minute & "." & word_list.Item(9)
Open FileName For Output As FileNumber
Print #FileNumber, word_list.Item(1) & comma & Sta_right & comma & word_list.Item(10) & comma & word_list.Item(11) & Date & comma & Time & comma & Explain
Close FileNumber
FileNumber = FreeFile
Open "sendfile" For Output As FileNumber
Print #FileNumber, "open " & word_list.Item(3)
Print #FileNumber, "xxr2"
Print #FileNumber, "xxr2"
Print #FileNumber, "cd /"
Print #FileNumber, "cd " & word_list.Item(6)
Print #FileNumber, "lcd " & word_list.Item(7)
Print #FileNumber, "sci"
Print #FileNumber, "prompt"
Print #FileNumber, "put " & FileName
Print #FileNumber, "bye"
Close FileNumber
ChDrive ("C:")
ChDir (word_list.Item(10))
FileNumber = FreeFile
Open "pingip.bat" For Output As FileNumber
Print #FileNumber, "ping " & word_list.Item(3) & " > " & word_list.Item(9) & "result.txt"
Close FileNumber
Shell ("pingip.bat")
ChDrive ("c:")
ChDir (word_list.Item(7))
FileNumber = FreeFile
Open "result.txt" For Input As FileNumber
Do While Not EOF(FileNumber)
Line Input #FileNumber, result_file
If InStr(1, result_file, "bytes from", vbTextCompare) > 0 Then
str_ftp = "ftp " & "-s " & word_list.Item(9) & "sendfile"
Shell (str_ftp)
End If
Loop
Close FileNumber
End If
Seek_Start_Flag = False
End If
End If
End Sub
Exit Sub
\\
如果Find_Result等于true,就已经退出了这个过程.因为你执行了Exit Sub
shell中的部分也没有执行
我想在shell中执行这个:ping 192.6.17.5 > a.txt 和 ftp -s sendfile
sendfile中包括
open 192.6.17.5
xxr2
xxr2
cd /
cd /home/xxr2/alert
lcd C:\PCVSAT\SENDFILE
asc
prompt
put A161626.012
bye
代码逻辑不太清楚。在前两项查找中即使找到,执行后面的代码时 Find_Result 又编程 False 了。 FileName = HB & Str_GST_day & Str_GST_hour & Str_30 & EHB
Find_File = Dir(FileName, vbNormal)
If Find_File = FileName Then
Find_Result = True
GoTo EndSearch
End If
FileName = HB & Str_GST_day & Str_GST_hour & Str_40 & EHB
Find_File = Dir(FileName, vbNormal)
If Find_File = FileName Then
Find_Result = True
GoTo EndSearch
End If
FileName = HB & Str_GST_day & Str_GST_hour & Str_50 & EHB
Find_File = Dir(FileName, vbNormal)
If Find_File = FileName Then
Find_Result = True
End If
'/
'查找文件代码结束
'/
EndSearch:
'/
'/报警文件生成代码开始
Seek_StarTime = DateAdd("N", word_list.Item(13), Time)
Seek_Start_Flag = True '既然这里强制设置为 True
End If
If Seek_Start_Flag = True Then '这里就不必要了