代码之家  ›  专栏  ›  技术社区  ›  AMunim

获取并设置Process.StandardOutput中的位置

  •  0
  • AMunim  · 技术社区  · 7 年前

    例如,我打开CMD并导航到要从中获取数据的文件夹,然后使用它打开应用程序,使用标准输入(全部同步)到目前为止的代码

    public static Process Start(bool DoNotShowWindow = false)
        {
            ProcessStartInfo cmdStartInfo = new ProcessStartInfo
            {
                FileName = "cmd.exe",
                RedirectStandardOutput = true,
                RedirectStandardError = true,
                RedirectStandardInput = true,
                UseShellExecute = false,
                CreateNoWindow = DoNotShowWindow
            };
    
            Process cmdProcess = new Process
            {
                StartInfo = cmdStartInfo,
                EnableRaisingEvents = true
            };
    
            return cmdProcess;
        }
        //in other method
        Process cli = InteractWithConsoleApp.Start();
            cli.Start();
    
            cli.StandardInput.WriteLine("cd /");
            cli.StandardInput.WriteLine("cd " + path);
            cli.StandardInput.WriteLine("fantasygold-cli getbalance abc");
    
            Thread.Sleep(5000);
    

    问题

    现在,当我使用StandardOutput.Readline时,它从一开始就返回所有内容,比如版权的前两行,空行,甚至输入,在我的情况下,在等待5秒的结果后,我想读取行或结束,这取决于输入的位置。

    可能的解决方案

    我发现的一个解决方案是改变位置,但结果证明它不支持,甚至复制到另一个流读取器也不起作用(位置不是按行)。

    我可以使用像check a double这样的过滤器,或者一个地址以F开头,长度为36。当我想得到整个JSON时,问题就来了,就像过去的事务一样,我认为使用像{这样的过滤器,然后检查}

    那么,我的问题有什么解决办法:)

    1 回复  |  直到 7 年前
        1
  •  1
  •   AMunim    7 年前

    cli.StartInfo.FileName = Directory.GetCurrentDirectory() + @"\SubfolderName\fantasygold-cli";

    cli.StartInfo.Arguments = "getbalance amunim"