0

我正在运行 sql server 2008,我有一个 .exe 文件,它创建了一个 .txt 文件,该文件保存在同一目录中。(因此,在运行之前只存在 .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 回答