2017-03-20 15 views
0

絶対パスを使用してファイルの場所を識別するC#コードがあります。コードをデバッグするとき、パスは引き続き絶対的です(Console.WriteLineを使用して確認します)。 Windowsタスクスケジューラからコードを起動すると(その起動時)、パスは相対パスとして表示されます(Console.WriteLineによって確認済み)。しかし、コードを直接実行しようとすると(exeファイルをコンパイルしたり、タスクスケジューラから起動した場合)、パスは絶対パスとして再度表示されます!ここでC#コードスケジュールされたタスク中の絶対パスから相対パスへの切り替え

は、私はパスを呼び出す方法は次のとおりです。

string path = Directory.GetCurrentDirectory(); 
string strSCPath = path + @"\Scorecards"; 
string filePath = strSCPath + @"\" + file + ".txt"; 

そして、どのように私は、相対/絶対的な条件を確認します。

Console.WriteLine("Filepath defined as: {0}", filePath"); 

そして私は、タスクスケジューラを使用して実行します。

Filepath defined as .\Scorecards\file.txt 

しかし、手動で実行:

Filepath defined as D:\Users\Files\Scorecards\file.txt 

私のコードまたはタスクスケジューラ自体に設定がありますが、上記の条件の原因になるのは正しく設定されていませんか?

+1

[mcve]を入力してください。 [ask]もご覧ください。 – Igor

+1

"私はC#コードをいくつか持っています"。あなたは本当にこの質問のコードを共有する必要があります... – spender

+0

*カレントディレクトリ*から起動している場合は、起動時のカレントディレクトリ*が正しく設定されていることを確認してください。 –

答えて

0

この出力は何ですか?相対パスがどこに解決されているかを教えてください。

DirectoryInfo di = new DirectoryInfo(Path.Combine(path, "Scorecards")); 
Console.WriteLine("Directory defined as: {0}", di.FullName); 
0

この問題は解決されました。別のコーダーがパスコードを相対に戻してコード表示後の表示を変更したようです。徹底的なスラッシングの後、私たちは基本コードに戻りました。

理由コードは異なる行動するだろうが、私はこの質問を閉じてるまだわからない...

ありがとう!

関連する問題