Reading Console输出以写出错误日志VB

问题描述

| 我在计算机上运行一些命令,如果命令无法运行,我希望它们输出单独的文本文件。
For Each strUserName As String In strLines
        Dim ReplaceCommand As String = sCommand.Replace(\"*\",strUserName).Replace(\"$$$\",saveFileDialog3.FileName & \".txt\").Replace(\"###\",exeSearch)
        Shell(\"cmd.exe /c\" & ReplaceCommand,AppWinStyle.Hide,True,)


        \' If Command Cannot Execute,List Why and Move onto Next Command
            Using swrr As New StreamWriter(File.Open(ErrorLog,FileMode.OpenOrCreate))
                If Console.Readline = \"blahblah\" Then swrr.WriteLine(\"FAIL\") Else swrr.WriteLine(\"PASS\")
        End Using
Next
我在正确的轨道上吗?我正在将输出输出到文本文件,但仅一行回答总是显示PASS。     

解决方法

有几件事情:您每次要向其写入一行时都在创建一个新的StreamWriter,而不是创建一个,而是在需要时仅对其进行写入。您仍在使用shell,它实际上是非常基本的,并不真正适合您的需求。您确实应该为此使用一个过程。 我已经为您编写了一个函数来执行该过程,而不是使用Shell,该函数会将命令执行的输出返回到ConsoleOutput变量,然后您可以检查该变量以查找输出字符串。 最后,您应该使用String.Format而不是replace来创建要运行的命令的正确字符串。例如:
    Dim FirstName As String = \"Jay\"
    Dim Age As String = \"twenty\"
    Dim Greeting As String = String.Format(\"Hello {0},I know you\'re {1} years old\",FirstName,Age)
    \' Greetings value would be \"Hello Jay,I know you\'re twenty years old\"
因此,请使用STRING.FORMAT函数来调整以下内容以使其适合特定的Args变量:)
 Sub DoWork()

        Dim ConsoleOutput As String = String.Empty

        Using swrr As New StreamWriter(ErrorLog,True)

            For Each strUserName As String In StrLines

                ConsoleOutput = GetCMDOuput(strUserName,saveFileDialog3.FileName,exeSearch)

                \' If Command Cannot Execute,List Why and Move onto Next Command
                If ConsoleOutput = \"blahblah\" Then swrr.WriteLine(\"FAIL\") Else swrr.WriteLine(\"PASS\")

            Next

        End Using

    End Sub

    Function GetCMDOuput(ByVal strUserName As String,ByVal strFileName As String,ByVal strExeSearch As String) As String

        Dim Args As String = String.Format(\"/c -paramzero {0} -paramone {1} -paramtwo {2}\",strUserName,strFileName,strExeSearch)

        Dim CMD As New Process
        CMD.StartInfo.FileName = \"cmd.exe\"
        CMD.StartInfo.Arguments = Args
        CMD.StartInfo.UseShellExecute = False
        CMD.StartInfo.RedirectStandardInput = True
        CMD.StartInfo.RedirectStandardOutput = True
        CMD.StartInfo.CreateNoWindow = True
        CMD.Start()

        Dim retval As String = CMD.StandardOutput.ReadToEnd

        CMD.WaitForExit()

        Return retval

    End Function
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...