• (56)C# 读取控制台程序


    一、

    using System;
    
    namespace ConsoleApp1
    {
        class Program
        {
            static void Main(string[] args)
            {
                Console.Write(args[0]);
            }
        }
    }

    编译生成ConsoleApp1.exe,并放到ConsoleApp2-bin-的Debug文件夹

    using System;
    using System.Diagnostics;
    
    namespace ConsoleApp2
    {
        class Program
        {
            static void Main(string[] args)
            {
                Process p = new Process();
                p.StartInfo.FileName = "ConsoleApp1.exe";
                p.StartInfo.Arguments = "a b c";//用空格来分隔参数,传给cmd.exe 时相当于传了个包含 a,b,c的字符串数组
                p.StartInfo.UseShellExecute = false;    //是否使用操作系统shell启动
                p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
                p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
                p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
                //p.StartInfo.CreateNoWindow = true;//不显示程序窗口?????
                p.Start();
                string output = p.StandardOutput.ReadToEnd();//获取cmd窗口的输出信息
                Console.WriteLine(output);
                Console.ReadLine();
            }
        }
    }

     修改一下ConsoleApp2

            static void Main(string[] args)
            {
    
                while (1 == 1)
                {
                    Console.Write("输入指令:");
                    string str = Console.ReadLine();
                    Process p = new Process();
                    p.StartInfo.FileName = "ConsoleApp1.exe";
                    p.StartInfo.Arguments = str;//用空格来分隔参数,传给cmd.exe 时相当于传了个包含 a,b,c的字符串数组
                    p.StartInfo.UseShellExecute = false;    //是否使用操作系统shell启动
                    p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
                    p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
                    p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
                    //p.StartInfo.CreateNoWindow = true;//不显示程序窗口?????
                    p.Start();
                    string output = p.StandardOutput.ReadToEnd();//获取cmd窗口的输出信息
                    p.WaitForExit();//等待程序执行完退出进程
                    p.Close();
                    Console.WriteLine("返回信息:" + output);
                    Console.WriteLine("");
                }
            }

    就可以和调用的控制台交互了

    但是有个问题,如果输入的字符串带空格,就会截取到空格前的字符输出

    多加上双引号就可以表示成一个字符串

    二、调用cmd

     官方

            static void Main(string[] args)
            {
    
                //Console.WriteLine("Ready to sort one or more text lines...");
    
                using (Process myProcess = new Process())
                {
                    myProcess.StartInfo.FileName = "cmd.exe";
                    myProcess.StartInfo.UseShellExecute = false;
                    myProcess.StartInfo.RedirectStandardInput = true;
    
                    myProcess.Start();
    
                    StreamWriter myStreamWriter = myProcess.StandardInput;
    
                    String inputText;
                    do
                    {
                        //Console.WriteLine("Enter a line of text (or press the Enter key to stop):");
    
                        inputText = Console.ReadLine();
                        if (inputText.Length > 0)
                        {
                            myStreamWriter.WriteLine(inputText);
                        }
                    } while (inputText.Length > 0);
    
                    myStreamWriter.Close();
    
                    myProcess.WaitForExit();
                }
                Console.ReadLine();
            }
  • 相关阅读:
    通用Excel导入设计
    批量执行SQL文件
    ExtJS之对话框及窗口篇
    Windows Phone 7完整版模拟器
    C#迭代器
    XNA游戏开发之速度调整
    ExtJs之Panel篇
    Table锁定行列
    PB调用WebService示例(含源码)
    调用CodeSmith类库实现代码生成(含源码)
  • 原文地址:https://www.cnblogs.com/buchizaodian/p/10655025.html
Copyright © 2020-2023  润新知