VBS OBJSHELL.RUN은 "% COMSPEC % / c 핑"및 myOBJ & ">>"& ReportFilename을 실행하지 않습니다.

StackOverflow https://stackoverflow.com//questions/21001247

문제

코드는 일부 ping 및 tracert 명령을 파일에 실행 한 다음 파일을 이메일로 보내려면됩니다.대신 빈 파일을 만듭니다.

나는 objshell.exec에서 리디렉션을 시도했지만 팝업 창문은 짜증나고 훔치는 초점을 훔칩니다.그리고 작업 스케줄러를 사용하여 백그라운드에서 주기적으로 실행되기를 바랍니다.

생성 된 구문은이 (및 명령 줄에 붙여 넣을 때 작동합니다) :

%COMSPEC% /c ping speedtest.advance2000.com >>c:\temp\testforteresa2-foo@bar-2014-01-08__10-01.txt
.

결과 명령 문자열은 CMD> 창에 붙여 넣을 때 작동하지만 Excel의 테스트 및 실행 된 VBS에서 빈 파일을 생성합니다 ...

TXT 파일을 삭제할 수 있도록 전자 메일을 보내는 것을 확인하기 위해 대기 상태가 없습니다.나중에 밖으로 밝혀졌습니다 :)

'On Error Resume Next
Const ForReading = 1
Const ForAppending = 8

'PingSpeedTest

Sub PingSpeedTest()
   Dim GetUserLoginID ''As String
   Set objfso = CreateObject("Scripting.FileSystemObject")

   Dim WSHNetwork
   Set WSHNetwork = CreateObject("WScript.Network")
   GetUserLoginID = CStr(WSHNetwork.UserName)

   getuserdomain = CStr(WSHNetwork.UserDomain)
   '''''''''''REPORT NAME''''''''''''''''''''''''''''''
   ReportFileNAme = "c:\temp\testforteresa2-" & GetUserLoginID & "@" & getuserdomain & "-" & _
      DatePart("yyyy", Now) & "-" & _
      Right("0" & DatePart("m", Now), 2) & "-" & _
      Right("0" & DatePart("d", Now), 2) & "__" & _
      Right("0" & DatePart("h", Now), 2) & "-" & _
      Right("0" & DatePart("m", Now), 2) & ".txt"

   On Error Resume Next
      objfso.DeleteFile (ReportFileNAme)
   On Error GoTo 0

   Set reportfile = objfso.OpenTextFile(ReportFileNAme, ForAppending, True)

   Set objShell = CreateObject("WScript.Shell")

   Set List = CreateObject("System.Collections.ArrayList")
   List.Add "speedtest.advance2000.com"
   List.Add "myphone.advance2000.com"
   List.Add "vdesk.advance2000.com"
   '''
   For Each MyObj In List
   MyCmd = "%COMSPEC% /c ping " & MyObj & " >>" & ReportFileNAme  '''<<< Should work- creates correct syntax but no output
   objShell.Run MyCmd, 3, True

   MyCmd = "%COMSPEC% /c tracert " & MyObj & " >>" & ReportFileNAme
   objShell.Run MyCmd, 3, True
   Next ''MyObj



   Dim olLook ''As Object 'Start MS Outlook
   Dim olNewEmail ''As MailItem  ' Object 'New email in Outlook
   Dim strContactEmail ''As String 'Contact email address
   Set olLook = CreateObject("Outlook.Application")
   Set olNewEmail = olLook.createitem(0)
   strEmailSubject = "TopSellers.accdb Application"
   strEmailText = "PING AND TRACEROUTE RESULTS"
   'strContactEmail = GetUserLoginID & "@" & getuserdomain & ".com"

   With olNewEmail 'Attach template
      .To = "Foo@BAR.com"  'strContactEmail<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
      '.CC = strCc
      .body = strEmailText
      .Subject = "RE:PING AND TRACERT RESULTS"
      .display
      .Attachments.Add (ReportFileNAme)
   End With

   'objfso.DeleteFile (ReportFileNAme)

End Sub
.

도움이 되었습니까?

해결책

Set reportfile = objfso.OpenTextFile(ReportFileNAme, ForAppending, True)
.

reportFilename이라는 파일을 엽니 다..run

"%COMSPEC% /c ping " & MyObj & " >>" & ReportFileNAme  
. 그런 다음 OS가 해당 열기 파일에 쓸 수 있도록 요청합니다.ReportFile 생성을 건너 뜁니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top