2016-06-16 30 views
0

プロパティ - >デバッグボックスの下にコマンドライン引数の値"1|2|c:\temp"を置いています。私は、アプリケーションを実行すると、私のコードでは値をnullにすることはできません。パラメータ名のパス

は、私は、すべての引数の値を取得し、細かい作業が、私はexeファイルを実行すると、私はnullにすることはできません

値を取得しています

string[] args = Environment.CommandLine.Split('|').ToArray(); 

を使用してデータを読み込みます。パラメータ名のパス

私はグーグルを検索しましたが、理由とその解決方法は分かりませんでした。

コード:

string[] args = Environment.CommandLine.Split('|').ToArray(); 

for (int i = 0; i < args.Count(); i++) 
{ 
    switch (i) 
    { 
     case 0: 
      break; 
     case 1: 
      break; 
     case 2: 
      this.ImageFilePath = args[i]; 
      break; 
     case 3: 
      this.ImageFileName = args[i]; 
      break; 
     } 
    } 

私にエラーをレゾールするソリューションやアイデアを教えてください。

+2

'string.Split'は配列を返します。したがって、' ToArray'は無意味です。 – juharr

+2

exeをどのように実行しますか?それをダブルクリックすると、argsを取得せず、空のargs条件を処理しません。 – Shaharyar

+3

コマンドラインからexeファイルを実行していて、パイプを使用してパラメータを渡そうとしている場合|これはオペレーティングシステムによって実際に使用され、あるコマンドを別のコマンドにパイプする結果となります。区切り文字として別​​の文字を試してください。 – sheppe

答えて

0

コマンドラインユーティリティのパラメータにパイプ文字(|)を使用するように注意してください。二重引用符で囲まないと、実行可能ファイルはパラメータの一部のみを受け取ります。例えば。

test.exe this|is|a|test 

...パラメータ "this"がtest.exeに提供されるだけです。 test.exeの出力はアプリケーションis(存在する場合)に出力され、その出力はアプリケーションaなどにパイプされます。

一方、これは期待どおりです:

test.exe "this|is|a|test" 

個人的には、別の区切り文字を使用することを検討します。

+0

これは、元の質問に関するコメントで私が言ったことのより冗長なバージョンです。それは私にとって「答えに値する」とは思われませんでした。 – sheppe

+1

@sheppeええと、あなたがコメントして答えを出した後、私はあなたのコメントを+1しました。時々それは完全に説明するのに役立ちます、そして、私は退屈でした: – wardies

+0

素早い応答のためにみんなありがとう。あなたのアドバイスに従ってコードを修正します。 – Morshed

関連する問題