0

当我双击某个文件时,启动的应用程序的参数根据 Process Explorer:

"C:\Program Files (x86)\MiKeSoft\PCG Tools\PcgTools.exe" 调试 D:\Muziek\Korg\Workstations\Kronos\Sounds and 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
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"

即我想要自动 " 围绕字符串并将它们组合在一起。在这种情况下很容易,但是当有多个文件时它可能会很棘手。

注意:这不是关于 Debug 参数的问题(请参阅双击文件将“debug”作为第二个参数?)尽管使用了相同的示例。

4

2 回答 2

2

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

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

请注意 %1 周围的引号。

于 2013-04-14T22:58:19.313 回答
1

看看这个例子:

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();
于 2013-04-14T22:29:45.010 回答