0

特定のファイルをダブルクリックすると、起動されたアプリケーションの引数は Process Explorer に従っています。

"C:\Program Files (x86)\MiKeSoft\PCG Tools\PcgTools.exe" debug D:\Muziek\Korg\Workstations\Kronos\Sounds and Templates_Commercial\KRS\KRS-03\KRS-03.PCG

ファイル名 (デバッグ後) を含む引数を 1 つの文字列として (すべての可能性を手動で解析/結合/抽出せずに) 表示する簡単な方法はありますか?

理由: ファイルがさらに存在する可能性があります (スペースの有無にかかわらず)。

引数として取得するものは次のとおりです。

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 パラメーターに関する問題ではありません (ファイルをダブルクリックすると、2 番目のパラメーターとして "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 に答える