2012-02-21 15 views
1

この質問は、比較的単純なものとはずのも、私は思ういけない多くの説明を必要とする必要があり、ここに行く:どうすれば私のasp .net/c#プロジェクトコード内のスクリプトフォルダへの相対パスを使用するのですか?

私のウェブサイトはもちろんの.batファイルへのパスを要求するProcessオブジェクトを使用してバッチファイルを実行している

私は複数のサーバーに私のサイトを収容しているので、私は絶対パスを与えたいとは思わない私のプロジェクト内で相対パスを使用したい(たとえば、プロジェクトを作ったときにVisual Studioによって自動的に生成されたスクリプトフォルダを使う)

私はちょうどコード内のそのファイルを一度スクリプトフォルダに参照する方法を正確にはわかりません。完璧に動作

p.StartInfo.WorkingDirectory = "C:\\Users\\e\\Desktop\\Test_Bat_Thing"; 
p.StartInfo.FileName = "C:\\Users\\e\\Desktop\\Test_Bat_Thing\\test.bat"; 

は、ここに私の.batを参照するための私の現在のコードです。しかし、私はそれがラインに沿って何かになりたいです

p.StartInfo.WorkingDirectory = ".\\scripts"; 
p.StartInfo.FileName = ".\\scripts\\test.bat"; 

助けてください!ありがとうございます。

答えて

0

p.StartInfo.FileName = this.Server.MapPath("test.bat") 
+0

"指定されたファイルが見つかりません"ということは、私が試していることです。私のbatファイルはいくつかEXEファイルを同じフォルダに置いているので、作業ディレクトリを設定する必要があります – chilleo

+0

バッチファイルの場所を正確にはわからないので、上記の行を修正して実際の仮想ファイルを参照する必要がありますパス。私はServer.MapPathを呼び出すときに正しく参照できるように、ルートの特定のフォルダにバッチファイルを置く必要があると思う。 – mohammedn

+0

私は、Visual Studioがデフォルトで作る "Scripts"フォルダ内のフォルダにファイルを置いている新しいプロジェクトを開始するとき – chilleo

2

"~/"(Web Root Operator)をサイトのWebルートフォルダの参照として試してみてください。

また、あなたが使用して物理パスに仮想パスを変換することができます:

string rootPath = Server.MapPath("~"); 

Webルートオペレーター:

ASP.NETは、Webアプリケーションのルート演算子(〜)を含んをサーバーコントロールでパスを指定するときに を使用できます。 ASP.NETは〜 演算子を現在のアプリケーションのルートに解決します。 〜 演算子をフォルダと組み合わせて使用​​すると、現在のルート上にある に基づくパスを指定できます。詳細については

MSDNで参照してください。ASP.NET Web Project Paths

+0

どうすればスクリプトフォルダを〜から参照できますか?私が試したことはすべて>< – chilleo

+0

'〜/ scripts /'を試してみてください。 IISでWebRootパスを確認し、このルートパスの下にスクリプトフォルダがあることを確認します。 – sll

-1

あなたは、現在のユーザーのデスクトップのパスを参照する必要がある場合、あなたはこの文を使用することができます

string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 

あなたのコードが

のようになります。
+0

私たちはウェブアプリケーションを持っていると考えてデスクトップパスとは何ですか? – sll

+0

質問は、Webアプリケーションのルートに関連するパスについてでした。 –

+0

私はあなたがそのパスを使用しないことを試みている質問を誤って解釈したと思います。私が望むのは、スクリプトオブジェクトがプロセスオブジェクトpに渡す相対パスです。 – chilleo

関連する問題