2011-08-22 6 views
5

Process.Start("echo", "%cd%")を実行しようとすると、System.ComponentModel.Win32Exception: The system cannot find the file specifiedが発生します。 cmdでこれを手動で行うと、それはちょうどうまくいくように機能します。違いがあることは分かりませんでした。Process.Start( "echo"、 "%cd%")はW32Exceptionファイルをスローします。

また、確かにそこにあるはずのファイルのFile.Exists(logfile.txt)(w/oパス)を実行すると、falseを返します。これは上記のechoの理由です:デバッグ...

このエラーは開発マシンでは発生しません。テストしている別のマシンでのみ発生します。

Path変数は正常に見えます。どちらもWinXPです。どちらも、実行ファイルが、内部コマンドではありません、エコーのように、.NET 3.5

+0

なぜパスなしでファイルにアクセスしていますか?現在の作業ディレクトリを 'Environment.CurrentDirectory'で取得することができます。 – Yahia

答えて

9

は限りProcess.Start("cmd.exe", "/c echo %CD%")

を試してみてください実行しています。

+2

/Cコマンド:指定されたコマンドを実行して戻ります。 それが何をしていたのだろうか。 – Codezilla

1

これは、echoがアプリケーションではなくコンソールコマンドであるためです。これは、独自の実行可能ファイルに格納されていないためです。

パスのないファイル名を使用すると、作業ディレクトリに表示されますが、これは実行中のアプリケーションを含むディレクトリとは異なる可能性があります。ファイルを作成する必要があります。アプリケーションの設定を知ってから、パスを完全に修飾する必要があります。

2

System.Environment.CurrentDirectoryを使用すると、アプリケーションの作業ディレクトリをcmdに渡すことができます。 AFAIK%CD%はcmdの内部にあるので、Process.Startはそれを展開しません。通常の環境変数の場合は、Environment.ExpandEnvironmentVariablesを使用できます。

関連する問題