C# 程序之间传参数,Args 接收参数的处理
备忘,或者留给暂未接触但需要了解的人。
C#在一个进程内传参数方法那是相当多,但是涉及到程序之间传参数就不是那么方便了(当然socket,内存共享等方式属于另一类,此处不讨论),我们的C或者C#,亦或者Java等在Main的函数入口处都会有一个参数Arg或者Args就是留出来方便自己被第三方软件调用的时候传入参数的,俗称启动参数。
最近在使用的时候,我需要传入一个路径,并且路径中存在一些空格之类的符号,接收方始终接受错误,这个如何处理呢?由于一般传参时时输入一个string,接收方可以时string arg或者时string[] args,所以默认是使用空格来分割string类型的参数为string[]的。所以如果传入"D:\\Program files\\Baidu Yun\\Auto Update\\"这样一个参数就会变成“D:\Program”,“files\Baidu”,“Yun\Auto”,“Update\”形式,那该怎么办呢? 可以使用双引号("")把一个参数括起来,这里面还需要注意参数末尾带有“\”的问题。
做了如下实例验证通过(都在C#里,没有测试调用C/java程序测试):
调用方程序:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics; namespace argTest1
{
class Program
{
static void Main ( string[ ] args )
{
Console.WriteLine ( "Begin test");
Process p=new Process ( );
p.StartInfo.FileName = ".\\argTest.exe"; p.StartInfo.UseShellExecute = true;
ArgsBuilder arg=new ArgsBuilder ( );
arg.Add ( "hello");
arg.Add ( "D:\\小工具\\Assistant.exe" );
arg.Add ( AppDomain.CurrentDomain.BaseDirectory);
arg.Add ( "D:\\Program files\\Baidu Yun\\Auto Update\\");
arg.Add ( "D:/Program files/Baidu Yun/Auto Update/" );
arg.Add ( "Arg Ends" );
p.StartInfo.Arguments = arg.ToString ( ); p.Start ( ); Console.ReadLine ( );
}
/// <summary>
/// 参数构建类
/// </summary>
public class ArgsBuilder
{
StringBuilder _arg=new StringBuilder();
public ArgsBuilder()
{
_arg.Append ( "");
} /// <summary>
/// 添加参数
/// </summary>
/// <param name="str"></param>
public void Add(string str)
{
if ( str.EndsWith ( "\\" ) ) //处理最后若为“\\”,会被转义成“\”,然后变成转义符。
{
str += "\\";
}
_arg .AppendFormat( "\"{0}\"",str );
_arg.Append ( " "); //参数分割符号
}
public override string ToString()
{
return _arg.ToString();
}
}
}
}
被调用方:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; namespace argTest
{
class Program
{
static void Main ( string[ ] args )
{
if(args!=null && args.Length>) //打印出参数
{
foreach ( var item in args )
{
Console.WriteLine (item );
}
}
if(File.Exists(args[]))
{
System.Diagnostics.Process.Start ( args[]);
} string s=Console.ReadLine ( );
}
}
}
结果:

C# 程序之间传参数,Args 接收参数的处理的更多相关文章
- C# Winform程序之间如何传递和接收参数 Process
Program: static class Program { /// <summary> /// 应用程序的主入口点. /// </summa ...
- asp.net Get和Post传参和接收参数
asp.netGet和Post传参和接收参数 Get请求: 对于传参:test.aspx?name=%e5%bc%a0%e4%b8%89 接收参数的方法: Request.QueryString[&q ...
- Jquery Datatables 请求参数及接收参数处理
Jquery Datatables 请求参数及接收参数处理 /** * Created by wb-wuyifu on 2016/8/9. */ /** * Created by wb-wuyifu ...
- uploadify上传带参数及接收参数的方法
function uploadify() { $("#uploadify").uploadify({ method:'post', uploader: '/Manage/Order ...
- vue 路由传参 、接收参数
传参组件 一. <router-link :to='"/main/course?navName=" +item.columnName + "&id=&quo ...
- vue-router query和params 传参和接收参数
1.params 方式传递和接收参数 //传参 this.$router.push({ name: 'checkDetailInfo', params:{ fkdNum:fkdNum, jyayStr ...
- js跳转到新页面传参以及接收参数的方法
1.传递参数: window.location.href = "./list.html?id="+id; 1.接收参数: (1)接收参数函数封装 function GetReque ...
- 关于C#控制台传递参数和接收参数
前言: 写了这么久程序,今天才知道的一个基础知识点,就是程序入口 static void Main(string[] args) 里的args参数是什么意思 ?惭愧... 需求: 点击一个button ...
- 于C#控制台传递参数和接收参数
前言: 写了这么久程序,今天才知道的一个基础知识点,就是程序入口 static void Main(string[] args) 里的args参数是什么意思 ?惭愧... 需求: 点击一个button ...
随机推荐
- grep命令的-P选项
man grep的时候有一个-P,文档上的英文: -P, --perl-regexp Interpret PATTERN as a Perl regular expression. This is ...
- JaveScript函数(JS知识点归纳六)
1.函数的基本使用 a)作用:代码的复用,灵活性比较强 b)声明方式:function 名 (形参){函数体} c)调用: 名(实参); d)封装函数--书写一个函数的结构,而且放入一些功能,在需要使 ...
- 分享:Python中的位运算符
按位运算符是把数字看作二进制来进行计算的.用的不太多,简单了解. 下表中变量 a 为 60,b 为 13二进制格式如下: a = 0011 1100 b = 0000 1101 a&b = 0 ...
- linux下安装jdk,tomcat以及mysql
环境:centOS6.8.jdk1.8,tomcat-8.5.15,mysql-5.7.18 1. 安装JDK 注意:rpm与软件相关命令 相当于window下的软件助手 管理软件 步骤: 1)查看 ...
- web3 - BOM&DOM
一.BOM (浏览器对象模型) 浏览器对象模型 (BOM) 使 JavaScript 有能力与浏览器"对话". Window 对象 1.window.onresize // 1 w ...
- Python基础——字符串
Python版本:3.6.2 操作系统:Windows 作者:SmallWZQ 在Python中,字符串也是一种数据类型.相比其它数据类型,字符串算是比较复杂的.为何呢?因为字符串不仅包含英文字母 ...
- FreeImage库如何转换图片格式?
FreeImage下载地址:http://freeimage.sourceforge.net/ //freeimagemain.h #ifndef FREEIMAGEMAIN_H #define FR ...
- MySQL InnoDB表压缩
MySQL InnoDB表压缩 文件大小减小(可达50%以上) ==> 查询速度变快(count * 约减少20%以上时间) 如何设置mysql innodb 表的压缩: 第一,mysql的版本 ...
- Hive:子查询
Hive只支持在FROM子句中使用子查询,子查询必须有名字,并且列必须唯一:SELECT ... FROM(subquery) name ...
- KVM虚拟化网络优化技术总结
https://www.intel.com/content/dam/www/public/us/en/documents/technology-briefs/sr-iov-nfv-tech-brief ...