0

SQL Server 2008 を実行していますが、同じディレクトリに保存される .txt ファイルを作成する .exe ファイルがあります。(したがって、実行前は .exe ファイルだけが存在し、.exe を実行すると、.exe ファイルと .txt ファイルが存在します。) そこから、.exe ファイルはその .txt ファイルを添付ファイルとして使用して電子メールを送信します。

完全に機能するのは次のとおりです。.exe ファイルをダブルクリックすると、.txt ファイルが作成され、電子メールが送信されます。または、.txt ファイルが既に存在する場合は、新しいファイルで上書きされます。.exe を実行するバッチ ファイルをダブルクリックすると、それも機能します。

うまくいかないのは次のとおりです。サーバー上のタスク スケジューラで .exe または .bat ファイルを起動しようとすると、非常に奇妙なことが起こります。.txt ファイルは上書きまたは作成されません。.txt ファイルが存在しない場合、新しいファイルは作成されず、電子メールは送信されません。古い .txt ファイルをそこに置くと、電子メールは古いファイルと共に送信されます (つまり、ファイルは上書きされませんでした)。つまり、すべてを要約すると、タスク スケジューラは、.exe ファイルが .txt ファイルを作成することを許可しません。楽しみのために、プログラムを修正しました (C++ で作成されました)。これにより、電子メールなしで .txt ファイルのみが作成され、.txt ファイルは作成されません。

4

1 に答える 1

1

次のようなコードを使用していると仮定しています。

if (!File.Exists("logfile.txt"))
{
     log = new StreamWriter("logfile.txt");
}
else
{
     log = File.AppendText("logfile.txt");
}

taskscheduler を実行するときは、次のようにフルパスを使用することをお勧めします。

if (!File.Exists("c:\\Program Files (x86)\\Company\\Sales Report\\logfile.txt"))
{
       log = new StreamWriter("c:\\Program Files (x86)\\Company\\Sales Report\\logfile.txt");
}
else
{
       log = File.AppendText("c:\\Program Files (x86)\\Company\\Sales Report\\logfile.txt");
}

これは、ファイルの読み取り時にも適用されます。

于 2013-08-13T04:01:50.850 に答える