Lou*_*hys 3 .net c# processstartinfo console-application command-line-arguments
我有一个.Net应用程序,它接受一堆命令行参数,处理其中一些,并将其余部分用作另一个应用程序的参数
例如
MyApp.exe foo1 App2.exe arg1 arg2 ...
Run Code Online (Sandbox Code Playgroud)
MyApp.exe是我的应用程序,
foo1是我的应用程序关心的参数.App2.exe是另一个应用程序,我的应用程序将运行带有arg1 arg2等的App2作为参数.
目前我的应用程序只是使用这样的东西运行App2.exe
Process.Start(args[1], String.Join(" ", args.Skip(2)).因此上面的命令将正确运行:带有参数"arg1 arg2"的App2.exe.但是,请考虑这样的事情
MyApp.exe foo1 notepad.exe "C:\Program Files\readme.txt"
Run Code Online (Sandbox Code Playgroud)
上面的代码不会知道引号,并将使用参数C:\ Program Files\readme.txt(不带引号)运行notepad.exe.我该如何解决这个问题?
Environment.CommandLine
Run Code Online (Sandbox Code Playgroud)
会给你一个确切的命令行 - 你必须解析你的应用程序的路径,但其他工作就像一个魅力 - @idle_mind提到这个早期(有点)
编辑将示例移到答案中(因为人们显然仍然在寻找这个答案).请注意,当debuging vshost稍微搞砸命令行时.
#if DEBUG
int bodgeLen = "\"vshost.\"".Length;
#else
int bodgeLen = "\"\"".Length;
#endif
string a = Environment.CommandLine.Substring(Assembly.GetExecutingAssembly().Location.Lengt??h+bodgeLen).Trim();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1752 次 |
| 最近记录: |