[C#] Process.startがexit code 2で終了


問題


Process.startで外部プログラムを実行した際に、期待した動作をせずにexit code 2で終了してしまう(例外などは出ない)。



原因


コマンドライン引数として実行ファイルのパスを渡しているのだが、そのパスに空白が入っていたこと。コマンドライン引数は空白以降は別の引数と見なされてしまう。



解決策


コマンドライン引数は""で囲むと空白で区切られなくなる。"を文字列とするには""を頭につける必要がある。

System.Diagnostics.ProcessStartInfo psi =
    new System.Diagnostics.ProcessStartInfo();

psi.FileName = "python.exe";
psi.Arguments = @"""C:\my folder\test.py"""; //ここ

System.Diagnostics.Process.Start(psi);


最後に


こんな平凡なミスでハマってしまった、、、

自分でフォルダ名付けるときは空白は入れないが、visual studioのインストール先が空白入りなんだよな

最新記事

すべて表示

現象 C#で下記のコードでタイトルのコンパイルエラーが発生。 このエラーは、例えばclassがprivateなのにメソッドがpublicといった場合に発生するのだが、この例ではどちらもpublic public class MyClass{ public MyClass(OtherClass data){ //ここでエラー //略 } 原因と解決策 コンストラクタ

靴を大切にしよう!靴管理アプリ SHOES_KEEP

納品:iPhone6.5①.png

靴の履いた回数、お手入れ回数を管理するアプリです。

google-play-badge.png
Download_on_the_App_Store_Badge_JP_RGB_blk_100317.png

テーマ日記:テーマを決めてジャンルごとに記録

訂正①2040×1152.jpg

ジャンルごとにテーマ、サブテーマをつけて投稿、記録できる日記アプリです。

google-play-badge.png