5

我创建了一个获取一些命令行参数的.NET 控制台应用程序。

当我传递带有空格的 args 时,我使用引号来包含这些参数,这样它们就不会被 cmd 分割:

C:\MyAppDir> MyApp argument1 "argument 2" "the third argument"

如果我在 Windows XP 中执行该应用程序,它可以正常工作:它有 3 个参数:

  • 论据1
  • 论点 2
  • 第三个论点

但是,如果我在 Windows Server 2008 中执行它,它似乎会忽略引号:它有 6 个参数:

  • 论据1
  • “争论
  • 2"
  • “这
  • 第三
  • 争论”

任何想法为什么?

注意:我在 Main 开始使用此代码执行时打印了参数:

Console.WriteLine("Command line arguments:");
foreach (string arg in args)
{
    Console.WriteLine("# " + arg);
}
4

3 回答 3

9

确保您输入的字符确实是双引号 "。

也许这是一个看起来像它的角色。

我知道我的希腊语设置会产生一个 " 但不是这样读的。

于 2012-05-11T09:43:18.880 回答
1

请试一试。

C:\MyAppDir> MyApp argument1 \"argument 2\" \"第三个参数\"

于 2016-12-26T12:50:01.710 回答
0

您可以尝试将每个参数放在 Quota"" 之间,并在路径中放置双反斜杠,例如:

genradorPlantillasPDF.exe "C:\GDI\desarrollos\celula canales\proyectos\Progreso\curso xml\"generadorprogreso.xml C:\Temp\ BVI "C:\GDI\desarrollos\celula canales\proyectos\Progreso\plantilla\" " C:\GDI\desarrollos\celula canales\proyectos\Progreso\" "Formulario Progreso 版本 2.0.docx" C:\Temp\

于 2020-02-19T23:10:09.177 回答