2016-07-15 8 views
0

cmd.exeにコマンドを「送信」して出力を受け取るプロジェクトに取り組んでいます。このコマンドでは、ファイルパス-kとurlが必要です。 は、私は、次のコード(名前と値を変更)を持っている:cmdプロセスは正しいコマンドを実行しません

string path = "C:\Users\program.exe" 
    string pathcustom = "\"" + path + "\"";  //the path needs to be in quotation marks 

    Process p = new Process(); 
    p.StartInfo.FileName = "cmd.exe"; 
    p.StartInfo.UseShellExecute = false; 

    string Address = "1.2.3" 

    string command = pathcustom + " " + "-k" + " " + "https://username:[email protected]" + Address;  //Serveradress is the URL 

    p.StartInfo.Arguments = "/C " + command; 
    p.StartInfo.RedirectStandardOutput = true; 
    p.Start(); 

    string ReturnValue = p.StandardOutput.ReadToEnd(); 

私はそれになりたいが、私は住所が違って見えることを除いて、正確に類似したthatsの別Methodeのを必要とするように、このコードは正常に動作しています。上記のコードでは、1.2.3のように見えますが、アドレスは以下のようになります(バックスラッシュと引用符を含む)\ "ab:cd:de \"だからこのふりをしましょう

string path = "C:\Users\program.exe" 
    string pathcustom = "\"" + path + "\"";   

    Process p = new Process(); 
    p.StartInfo.FileName = "cmd.exe"; 
    p.StartInfo.UseShellExecute = false; 

    string Address = @"\""ab:cd:de\"""; 

    string command = pathcustom + " " + "-k" + " " + "https://username:[email protected]" + Address;   

    p.StartInfo.Arguments = "/C " + command; 
    p.StartInfo.RedirectStandardOutput = true; 
    p.Start(); 

    string ReturnValue = p.StandardOutput.ReadToEnd(); 

cmdが開いたままになるようにコードを書き直すと、最初の方法で私は期待している/期待している出力を得ます。しかし、2番目の方法では、コマンドにcmdを送信して実行しますが、コマンドが間違って書かれたか、見つからなかったことを「メッセージ」として書き出します。しかし、私はちょうど(ストリームライターを介して私は、テキストファイルにcmdのコマンドを書く)とcmdにコピーすると、同じコードを取るとき、それはそれを実行するようにそれを実行します。だから、基本的には、私はC#でコマンドを実行すると動作しません。あなたはp.WaitForExit(ミリ秒)のような 使用何かを終了するには、アプリケーションを待つ必要が

+0

:引用符は、あなたはこのように、「トリプルそれをエスケープ」する必要がありますメソッドの入力に渡します。 –

+0

2番目の 'command'はパラメータ' -khttps:// username:passwort @ serveradress \\\ "ab:cd:de \\\" "'が本当に有効なURLですか? –

+0

スペースを追加するのを忘れました。 -kの後にコードがあります。アドレスはmetod入力にありますが(簡略化のため)、質問のためにこのように書いています。 – Shmosi

答えて

0

を助ける または維持するStartInfo.Argumentsで引数のために、this MSDN Postによるp.HasExited

0

をご確認くださいあなただけAddress` `の値が異なる別の方法をしたい場合は、単に` Address`を追加することによって、最初のものは、より一般的にしてください

string Address = "\\\"\"\"ab:cd:de\\\"\"\"; 
string command = pathcustom + " " + "-k" + "https://username:[email protected]" + Address; 
+0

最初のコードは、コード内の '' 'あなたは\ "を書く必要があり、\ 'は必要です。\\ 2番目は、文字列の' ''の@ infrontを追加します。たとえば、@ "\" ""は\ " – Shmosi

関連する問題