使用C#访问命令行

ili*_*rit 1 c# command-line

我需要从C#应用程序中访问命令行.如果我使用"args"参数,我找不到检测不匹配的双引号的方法.

我正在处理的应用程序可以选择加密通过命令行传递给它的字符串.

例如.

program.exe -encrypt somestring
Run Code Online (Sandbox Code Playgroud)

结果是:

EZs/6rWxvJ82+VE8unJ0Xw==
Run Code Online (Sandbox Code Playgroud)

现在,如果用户输入:

program.exe -encrypt somestring extra characters
Run Code Online (Sandbox Code Playgroud)

它会忽略"somestring"之后的所有内容(您仍然可以通过"args"参数访问其余值).

您可以使用双引号轻松解决此问题:

program.exe -encrypt "somestring extra characters"
Run Code Online (Sandbox Code Playgroud)

当然,如果您想使用嵌入式引号,可以使用"\"来转义它们:

program.exe -encrypt "somestring \"extra\" characters"
Run Code Online (Sandbox Code Playgroud)

当用户输入如下内容时会发生此问题:

program.exe -encrypt "somestring extra characters
Run Code Online (Sandbox Code Playgroud)

要么:

program.exe -encrypt somestring ex"tra characters
Run Code Online (Sandbox Code Playgroud)

该程序将完全忽略双引号,这不是用户期望的.我想检测这样的情况并告知用户不匹配/未转义的报价,否则他们可能最终得到错误字符串的加密版本.

Eiv*_*ver 6

这是命令行将参数传递给C#程序的方式.你不能改变它.但是,您可以作为整体访问命令参数字符串并自行执行验证.

MSDN:Environment.CommandLine属性