使用.net core 对老项目升级, .net core 使用TripleDES.Create() 加密众iv字节限制 与 framework中的不同, 新项目还需要兼容老项目版本,还不想通过webapi 进行数据request和response, 遂想到使用控制台输出的形式进行尝试,  具体代码如下;

.net core

 private static readonly string CmdPath = @"C:\Windows\System32\cmd.exe";

        /// <summary>
/// 执行cmd命令
/// 多命令请使用批处理命令连接符:
/// <![CDATA[
/// &:同时执行两个命令
/// |:将上一个命令的输出,作为下一个命令的输入
/// &&:当&&前的命令成功时,才执行&&后的命令
/// ||:当||前的命令失败时,才执行||后的命令]]>
/// 其他请百度
/// </summary>
/// <param name="cmd"></param>
/// <param name="output"></param>
private static string RunCmd(string cmd)
{
string param = $"{Environment.CurrentDirectory}//xxx.exe {cmd} &exit";//说明:不管命令是否成功均执行exit命令,否则当调用ReadToEnd()方法时,会处于假死状态
string result = string.Empty;
using (Process p = new Process())
{
p.StartInfo.FileName = CmdPath;
p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
p.StartInfo.RedirectStandardInput = true; //接受来自调用程序的输入信息
p.StartInfo.RedirectStandardOutput = true; //由调用程序获取输出信息
p.StartInfo.RedirectStandardError = true; //重定向标准错误输出
p.StartInfo.CreateNoWindow = true; //不显示程序窗口
p.Start();//启动程序 //向cmd窗口写入命令
p.StandardInput.WriteLine(param);
p.StandardInput.AutoFlush = true; //获取cmd窗口的输出信息
result = p.StandardOutput.ReadToEnd();
if (!string.IsNullOrEmpty(result))
result = result.Substring(result.LastIndexOf("&exit") + , result.Length - result.LastIndexOf("&exit") - ).Trim();
p.WaitForExit();//等待程序执行完退出进程
p.Close();
}
return result;
}

exe 控制台代码

 static void Main(string[] args)
{
if (args.Length <= )
{
Environment.Exit();
}
else
{
string[] _param = args;
string _type = _param[];
string res = string.Empty;
switch (_type)
{
case "RefreshToken":
res = Identity.instance.RefreshToken(_param[], _param[]);
break;
} Console.Out.WriteLine(res);
Console.Out.Close(); }
}

注: 在使用的过程中,需要注意exe的存放位置, 和调用时候加载的地址对应,

.net 代码调用cmd执行.exe程序,获取控制台输出信息的更多相关文章

  1. C#使用cmd运行命令并返回控制台输出信息

    public static string RunCmd(string cmd){ cmd = cmd.Trim().TrimEnd('&') + "&exit";/ ...

  2. c# 程序调用cmd执行命令如SVN.exe

    c# 程序调用cmd执行命令如SVN.exe string str = Console.ReadLine(); System.Diagnostics.Process p = new System.Di ...

  3. C#程序调用CMD执行命令,将参数传递给cmd.exe

    proc.StartInfo.Arguments = "/c ping 10.2.2.125"; C#程序调用CMD执行命令 将参数传递给cmd.exe的(Passing an a ...

  4. java调用cmd执行maven命令

    一.原理介绍 Java的Runtime.getRuntime().exec(commandStr)可以调用执行cmd指令. cmd /c dir 是执行完dir命令后封闭命令窗口. cmd /k di ...

  5. [Swift通天遁地]一、超级工具-(6)通过JavaScript(脚本)代码调用设备的源生程序

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  6. cmd执行Java程序

    先创建一个文本,里面内容为 public class hello{ public static void main(String[] arg) { System.out.println("H ...

  7. [微信小程序] 微信小程序获取用户定位信息并加载对应城市信息,wx.getLocation,腾讯地图小程序api,微信小程序经纬度逆解析地理信息

    因为需要在小程序加个定位并加载对应城市信息 然而小程序自带api目前只能获取经纬度不能逆解析,虽然自己解析方式,但是同时也要调用地图,难道用户每次进小程序还要强行打开地图选择地址才定位吗?多麻烦也不利 ...

  8. linux脚本: 后台启动程序并重定向输出信息脚本

    后台启动程序并重定向输出信息脚本 新建文件mstart, 写入下面代码. #!/bin/bash $1 1>/etc/null 2>&1 & 说明 1>/etc/nu ...

  9. VS中为非控制台程序提供控制台输出窗口

    /************************************************************************/ /* 模块名:ConsoleAdapter 文件名 ...

随机推荐

  1. Sqlserver (转载)事物与锁

    1   概述 本篇文章简要对事物与锁的分析比较详细,因此就转载了. 2   具体内容 并发可以定义为多个进程同时访问或修改共享数据的能力.处于活动状态而互不干涉的并发用户进程的数量越多,数据库系统的并 ...

  2. C# int uint long ulong byte sbyte float double decimal 范围,及类型!

    static void Main(string[] args) { Console.WriteLine(" byte {0,7:g}{1,32:g}{2,32:g}",typeof ...

  3. 资源池-数据库连接池简单实现-JAVA版本

    转载:https://www.jianshu.com/p/381c86bdbff6 看了看druid和dbcp2的原码,发现他们都有各自存储连接的方式. druid : private volatil ...

  4. 常用SQL指令

    SQL去重复语句:select 改为Delete select * from TRWTC01 where ITEM_NAME in (select ITEM_NAME from TRWTC01 gro ...

  5. 如何理解 PHP的依赖注入(DI) 和 控制反转(IoC)

    名词解释: IoC - Inversion of Control 控制反转 DI - Dependency Injection 依赖注入 依赖注入和控制反转说的实际上是同一个东西,它们是一种设计模式, ...

  6. pyspider 数据存入Mysql--Python3

    一.不写入Mysql 以爬取哪儿网为例. 以下为脚本: from pyspider.libs.base_handler import * class Handler(BaseHandler): cra ...

  7. golang基础学习-strings包常用函数学习

    package main import ( "fmt" "strings" ) //StrFunc 字符串说明 func main() { var testSt ...

  8. react-navigation 的抽屉效果 createDrawerNavigator (DrawerNavigator)

    一.前言: react-navigation  3.x 版本中, 使用createDrawerNavigator 替换 原先的DrawerNavigator 方法: 那么,当前createBottom ...

  9. MOOC 数据库笔记(四):关系代数

    关系代数 关系代数概述 特点 基于集合,提供了一系列的关系代数操作:并.差.笛卡尔积(广义积).选择.投影和更名等基本操作 以及交.连接和关系除等扩展操作,是一种集合思维的操作语言. 关系代数操作以一 ...

  10. Bootstrap 遮罩插件jquery.mloading

    使用方法 将jquery.mloading.js和jquery.mloading.css引入到页面,调用: $(element).mLoading({ text:"",//加载文字 ...