编程语言
首页 > 编程语言> > C#调用控制台程序

C#调用控制台程序

作者:互联网

主程序 .Net Core

 private static string CMDRun(string command)
        {
            var dir = AppDomain.CurrentDomain.BaseDirectory + @"\api\";


            if (!System.IO.Directory.Exists(dir))
            {
                return "api目录不存在";
            }

            var path = System.IO.Directory.GetFiles(dir, "*.exe").FirstOrDefault();

            if (string.IsNullOrEmpty(path))
            {
                return "api目录不存在exe程序";
            }

            var root = System.IO.Directory.GetDirectoryRoot(path);

            var fileName = System.IO.Path.GetFileName(path);


            using (Process p = new Process())
            {

                p.StartInfo.CreateNoWindow = true;
                p.StartInfo.FileName = @"cmd.exe";
                p.StartInfo.RedirectStandardError = true;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.UseShellExecute = false;//将此属性设置为 false 使您能够重定向输入流、输出流和错误流
                p.Start();
                p.StandardInput.WriteLine(@"echo off ");//不显示命令
                p.StandardInput.WriteLine(root.Replace("\\", ""));  //先转项目所在的盘
                p.StandardInput.WriteLine($@"cd {dir}");  //再转到exe所在目录下
                p.StandardInput.WriteLine($"{fileName} {command}");//执行exe
                p.StandardInput.WriteLine("exit");
                

                string result = p.StandardOutput.ReadToEnd();

                var array = result.Split("\r\n");

                p.Close();
                p.Dispose();

                return array[array.Length - 3];
            }
        }

控制台 .Net Framework

private static void Main(string[] args)
 {
        
            if (args[0] == "GetProductList")
            {
                if (args.Length < 3)
                {
                    Console.WriteLine("需要参数[methodName,StartRow,Limit]");
                    return;
                }
                int.TryParse(args[1], out int StartRow);
                int.TryParse(args[2], out int Limit);
//具体的事,比如这里是金蝶服务 string resultStr = api_k3_SS.GetProductList(StartRow, Limit);
           Console.WriteLine(resultStr);
            } 
}

 

标签:调用,string,C#,args,StandardInput,WriteLine,var,StartInfo,控制台
来源: https://www.cnblogs.com/212s/p/15870330.html