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(ミリ秒)のような 使用何かを終了するには、アプリケーションを待つ必要が
:引用符は、あなたはこのように、「トリプルそれをエスケープ」する必要がありますメソッドの入力に渡します。 –
2番目の 'command'はパラメータ' -khttps:// username:passwort @ serveradress \\\ "ab:cd:de \\\" "'が本当に有効なURLですか? –
スペースを追加するのを忘れました。 -kの後にコードがあります。アドレスはmetod入力にありますが(簡略化のため)、質問のためにこのように書いています。 – Shmosi