【问题标题】:Console app not parsing correctly args with white spaces控制台应用程序无法正确解析带有空格的 args
【发布时间】:2012-05-19 21:32:51
【问题描述】:

我创建了一个 .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);
}

【问题讨论】:

  • 您是否正在对 args 进行某种解析?
  • 您是否正在阅读可能正在转义 " 的 \ ?另外,您确定您输入的字符确实是双引号 " 吗?也许它是一个看起来像它的角色。我知道我的希腊语设置会产生一个“,但不是这样读的。
  • 大@ericosg!就是这样,我不知道为什么,但引号似乎有所不同(???)。谢谢!

标签: c# .net console-application command-line-arguments


【解决方案1】:

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

generadorPlantillasPDF.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\

【讨论】:

    【解决方案2】:

    请试一试。

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • 作为答案发布,因此您可以确保关闭它,而不仅仅是评论。
      猜你喜欢
      • 2013-01-06
      • 2015-07-12
      • 2015-11-01
      • 2019-05-09
      • 2010-10-24
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 2015-10-06
      相关资源
      最近更新 更多