C#从作为流程运行的控制台读取文本(输出?)

时间:2018-08-27 10:05:00

标签: c#

我正在尝试检查git存储库的用户名和密码是否有效。在控制台中,我运行:

Js

$(document).ready(function () {

    DivImage('sup');
      var s = skrollr.init({
           smoothScrolling: true,
           smoothScrollingDuration: 200,


          render : function(data){
              console.log(data.curTop);
          },
      });


    //Check the screen size.
    (function(){
        if (screen.width < 768) {
            $('#fullpage').fullpage({
                //scrollingSpeed: 0,
                });
               $('.DESKScreen').css('display','none')
            }
         else if(screen.width > 768) {
             $('.MObileScreen').css('display','none')
           }
       })()

    //Fakeloader for the loadtime
    function loader(){

        $("#fakeloader").fakeLoader({
            timeToHide:4000,
            bgColor:"#e74c3c",
            spinner:"spinner2"
        });

    }

    loader()
  });

function DivImage(name) {
    //console.log(name);
    //a counter to set for div id
    let counter = 0;

    //create the urls based on a nr
    var Images = makeUrls();

    //first create the div and pass the counter to it
    CreateDiv(Images);

}

 function makeUrls() {
    let base = 'https://someurl/';
    // let base = 'test/'
    let rest = '.jpg';
    let result = [];

    for (let i = 0; i < 191; i++) {

        let baseNr = 1 + i;
        if (baseNr === 2000) {
            console.log("base")
        }
        else {

            result.push(base + baseNr + rest);
        }
    }
    return result;
}



function CreateDiv(Images) {
    //console.log(Images)
    let i = 0;

我得到:

git clone http://username:password@server/test.git

所以现在我知道用户名和密码无效。我正在尝试将此命令作为进程运行:

fatal: Authentication failed for ...

我想访问此命令的结果。 process.StandardError process.StandardOutput 都等于 string.Empty 。有什么办法读取结果?

2 个答案:

答案 0 :(得分:1)

通常您应该阅读exit code of the process

process.ExitCode

如果处理失败,则返回值应为非0。当然,您只有在该过程完成后才能检索退出代码。

所以:

if (process.ExitCode != 0)
    //error

请注意:我尚未测试过,但这是标准惯例。

要读取输出,通常使用:

string output = process.StandardOutput.ReadToEnd();
string err = process.StandardError.ReadToEnd();
Console.WriteLine(output);
Console.WriteLine(err);

答案 1 :(得分:1)

您真正需要的是标准输出,可以通过以下方式访问:

string stdout = p.StandardOutput.ReadToEnd(); 

并在此之后立即使用p.WaitForExit();,因为有时需要一段时间才能给出错误消息。