在c#.Net中,我无法正确获取命令行参数。 在我给出如下命令的情况下它有问题:
myProgram.exe "c:\inputfolder\" "d:\output.txt"
由于args []数组中的反斜杠字符(我认为它是一个转义字符)我只得到一个参数而不是两个 如果我没有反斜杠就可以正常工作:
myProgram.exe "c:\inputfolder" "d:\output.txt"
或没有双引号:
myProgram.exe c:\inputfolder\ "d:\output.txt"
答案 0 :(得分:5)
我从未遇到过这样的问题,但是如果您想通过自己使用System.Environment.CommandLine解析命令行来获取它。
答案 1 :(得分:4)
这是一个众所周知的解析问题,除了将整个命令行作为单个字符串并自己解析之外,您无法做很多事情。
答案 2 :(得分:4)
反斜杠正在逃避shell中的引号字符。你必须使用额外的反斜杠:
myProgram.exe "c:\inputfolder\\" "d:\output.txt"
您可以使用以下简短示例程序来测试命令行解析:
using System;
class Program
{
static void Main(string[] args)
{
for (int i = 0; i < args.Length; i++)
{
Console.WriteLine(string.Format("Argument {0}: {1}", i, args[i]));
}
}
}
答案 3 :(得分:0)
如果其他人试图在命令行args中找到关于双引号的官方文档,我能找到的最接近的是c ++,它似乎直接适用:http://msdn.microsoft.com/en-us/library/17w5ykft.aspx