- ベストアンサー
C#でのProcess.Startと変数path
- C#のProcess.Startを使用して変数pathを実行しようとすると、ファイルが見つからないというエラーが発生します。
- 指定されたパスに実行ファイルが存在するにもかかわらず、Process.Startが実行できない問題が発生します。
- a.exeをパスなしで実行する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>System.Diagnostics.Process.Start("a"); 拡張子指定したらどうです? http://msdn.microsoft.com/ja-jp/library/53ezey2s%28v=vs.100%29.aspx って、拡張子ナシでもOKとはなっていますねぇ…。 >同様に、[ファイル名を指定して実行] ダイアログ ボックスで実行可能ファイル名は拡張子 .exe が付いているかどうかに関係なく受け入れられるのと同じように、fileName パラメーターでも拡張子 .exe は省略できます。 と……。 ということで、「ファイル名を指定して実行」でaだけで起動できます? >システムでパス変数を引用符で囲んで宣言している場合は、その場所で見つかったプロセスを開始するときに、そのパスの絶対パスを指定する必要があります。 これを実行しないと、システムはパスを見つけることができません。 って書かれているのが微妙…ですかねぇ。 "Program Files"ってことで、""でくくっているでしょうし。 # path設定の方をショートファイルネームにしたらどうなりますかね?
その他の回答 (1)
- Wr5
- ベストアンサー率53% (2173/4061)
>実を言うとAndroid SDKのadb.exeを実行したいのですが... こちらでは起動出来ましたが…。 ただし、adb.exeは空白込みのパスにはありませんでしたけど。 # Windows7 Professional 64Bit&VC#2010EE&.NET Framework 4.0 ClientProfile >"Program Files"ってことで、""でくくっているでしょうし。 ># path設定の方をショートファイルネームにしたらどうなりますかね? System.Diagnostics.Process.Start("TortoiseMerge"); での起動も可能でしたのでPATH環境変数に設定してあるものに半角空白が~というのも、とりあえずは問題ない……みたいですね。 # TortoiseSVNのインストール先はデフォルトでPATHへの追加あり。 もしかして、コマンドライン引数とか指定している…んでしょうか? その場合だと… http://msdn.microsoft.com/ja-jp/library/53ezey2s%28v=vs.100%29.aspx ではなく、 http://msdn.microsoft.com/ja-jp/library/h6ak8zt5%28v=vs.100%29.aspx で起動させる必要がある…かと。 TeraTermのttermpro.exeとttlファイルを指定して試しましたが… System.Diagnostics.Process.Start("TTPMACRO マクロファイルのフルパス")では失敗しました。 System.Diagnostics.Process.Start("TTPMACRO", "マクロファイルのフルパス")では起動できました。
お礼
自己解決しました。 こうすればちゃんとできました。 ご協力有難うございました。 p.FileName = "adb"; p.Arguments = "wait-for-device"; p.UseShellExecute = false; Process ps = Process.Start(p); ps.WaitForExit();
補足
回答有難うございます! [ファイル名を指定して実行]では a で実行できるのですが... 実を言うとAndroid SDKのadb.exeを実行したいのですが...