是否将C#参数中的多个参数视为包含空格的文件夹/名称的一个参数?

是否将C#参数中的多个参数视为包含空格的文件夹/名称的一个参数?,c#,arguments,C#,Arguments,双击某个文件时,已启动应用程序的参数符合Process Explorer: “C:\Program Files(x86)\MiKeSoft\PCG Tools\PcgTools.exe”调试D:\Muziek\Korg\Workstations\Kronos\Sounds and Templates\u Commercial\KRS\KRS-03\KRS-03.PCG 是否有一种简单的方法可以将包含文件名的参数(调试后)视为一个字符串(无需手动解析/组合/提取所有可能性) 原因:可以有更多的文件

双击某个文件时,已启动应用程序的参数符合Process Explorer:

“C:\Program Files(x86)\MiKeSoft\PCG Tools\PcgTools.exe”调试D:\Muziek\Korg\Workstations\Kronos\Sounds and Templates\u Commercial\KRS\KRS-03\KRS-03.PCG

是否有一种简单的方法可以将包含文件名的参数(调试后)视为一个字符串(无需手动解析/组合/提取所有可能性)

原因:可以有更多的文件(其中有空格或没有空格)

作为参数,我得到的是:

argument 0: "C:\Program Files (x86)\MiKeSoft\PCG Tools\PcgTools.exe"
argument 1: debug
argument 2: D:\Muziek\Korg\Workstations\Kronos\Sounds
argument 3: and 
argument 4: Templates\_Commercial\KRS\KRS-03\KRS-03.PCG
我想要的是:

argument 0: "C:\Program Files (x86)\MiKeSoft\PCG Tools\PcgTools.exe"
argument 1: debug
argument 2: "D:\Muziek\Korg\Workstations\Kronos\Sounds and Templates\_Commercial\KRS\KRS-03\KRS-03.PCG"
i、 我希望自动“环绕”字符串并将它们组合在一起。在这种情况下很容易,但当有多个文件时可能会很棘手

注意:虽然使用了相同的示例,但调试参数(请参阅)没有问题。

请看以下示例:

C:\development\abkcmd\abkcmd\bin\Debug>abkcmd.exe one "two parms" 3
Number of command line parameters = 3
Arg[0] = [one]
Arg[1] = [two parms]
Arg[2] = [3]


C:\development\abkcmd\abkcmd\bin\Debug>abkcmd.exe one two parms 3
Number of command line parameters = 4
Arg[0] = [one]
Arg[1] = [two]
Arg[2] = [parms]
Arg[3] = [3]


C:\development\abkcmd\abkcmd\bin\Debug>abkcmd.exe one two 'parms' 3
Number of command line parameters = 4
Arg[0] = [one]
Arg[1] = [two]
Arg[2] = ['parms']
Arg[3] = [3]
您可以使用以下代码执行此操作:

Console.WriteLine("Number of command line parameters = {0}", args.Length);
        for (int i = 0; i < args.Length; i++)
        {
            Console.WriteLine("Arg[{0}] = [{1}]", i, args[i]);
        }

        Console.ReadLine();
Console.WriteLine(“命令行参数的数量={0}”,args.Length);
for(int i=0;i
请看以下示例:

C:\development\abkcmd\abkcmd\bin\Debug>abkcmd.exe one "two parms" 3
Number of command line parameters = 3
Arg[0] = [one]
Arg[1] = [two parms]
Arg[2] = [3]


C:\development\abkcmd\abkcmd\bin\Debug>abkcmd.exe one two parms 3
Number of command line parameters = 4
Arg[0] = [one]
Arg[1] = [two]
Arg[2] = [parms]
Arg[3] = [3]


C:\development\abkcmd\abkcmd\bin\Debug>abkcmd.exe one two 'parms' 3
Number of command line parameters = 4
Arg[0] = [one]
Arg[1] = [two]
Arg[2] = ['parms']
Arg[3] = [3]
您可以使用以下代码执行此操作:

Console.WriteLine("Number of command line parameters = {0}", args.Length);
        for (int i = 0; i < args.Length; i++)
        {
            Console.WriteLine("Arg[{0}] = [{1}]", i, args[i]);
        }

        Console.ReadLine();
Console.WriteLine(“命令行参数的数量={0}”,args.Length);
for(int i=0;i
您的文件类型注册没有在参数周围加引号。如果要引用参数,必须提供引号。Windows只是按照您提供的说明进行操作

"C:\Program Files (x86)\MiKeSoft\PCG Tools\PcgTools.exe" debug "%1"

请注意%1周围的引号。

您的文件类型注册没有在参数周围加引号。如果要引用参数,必须提供引号。Windows只是按照您提供的说明进行操作

"C:\Program Files (x86)\MiKeSoft\PCG Tools\PcgTools.exe" debug "%1"

请注意%1周围的引号。

您已经发布了该问题…不,这是无关的…这是一个关于空格的问题,它使我的参数不完整的文件名/文件夹名。它与作为第二个参数的调试无关。您需要修复该文件来执行此操作。这是唯一简单的方法。是否还有其他可能的参数调试后?或者这是唯一的可能?@Ryan Gates:你的意思是手动检查哪些部分属于一起(文件夹部分和文件名部分)?似乎是一项困难的任务,尤其是当选择了多个参数(所有参数都可以包含空格)时。您已经发布了该问题…不,这是无关的…这是一个关于空格的问题,它使我的参数不完整的文件名/文件夹名。它与作为第二个参数的调试无关。您需要修复该文件来执行此操作。这是唯一简单的方法。调试后是否有其他可能的参数?或者这是唯一真正的po可访问性?@Ryan Gates:您的意思是手动检查哪些部分属于同一个部分(文件夹部分和文件名部分)?似乎是一项困难的任务,尤其是当选择了多个参数(所有参数都可以包含空格)时。我知道,但问题是我无法决定如何发送参数。我知道如何读取参数,但手动将正确的参数粘贴在一起并不简单…至少我希望有一些简单的解决方案。我知道,但问题是我无法决定如何发送参数。我知道如何读取参数,但手动粘贴正确的参数一起争论不是小事……至少我希望有一些简单的解决办法。