ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#调用控制台程序

2022-02-08 10:31:58  阅读:176  来源: 互联网

标签:调用 string C# args StandardInput WriteLine var StartInfo 控制台


主程序 .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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有