【问题标题】:Batch file called from a c# application not getting executed via task scheduler从 C# 应用程序调用的批处理文件未通过任务调度程序执行
【发布时间】:2025-12-07 19:35:02
【问题描述】:

我有一个 C# 应用程序,它在内部创建一个批处理文件并运行它。当我手动运行 exe 时,一切正常,但是当我通过任务计划程序运行它时,它无法执行批处理文件。 (我使用的是 Windows 8)。谁能帮帮我吗? 提前致谢

【问题讨论】:

  • 请分享一些代码。先验地,我看不到在运行时创建批处理文件的确切意义;请注意,在执行批处理文件时,相对路径可能是一个问题。
  • 正如@peer 提到的,工作目录可能不正确。此外,可能存在权限错误 - 检查任务正在以哪个用户身份运行,并确保该用户有权访问您尝试将 bat 文件写入的目录。还要检查bat文件中没有任务用户不能执行的命令。
  • 可能不是编码问题。我在服务器上运行了一个类似的系统,这需要特定的权限才能允许启动的任务 .exe 执行批处理文件。没有将此作为答案发布,因为我不记得它具体是哪个权限(还)。
  • 嗨,相对路径是问题所在。我在我的代码中漏掉了一个 :) 谢谢

标签: c# batch-file task scheduler


【解决方案1】:

我猜运行目录不正确。您的应用程序在错误的位置创建批处理文件,或者您的应用程序在错误的位置查找批处理文件。检查任务调度程序中的运行目录以解决此问题。

【讨论】:

  • 要考虑的另一件事是权限:exe 以什么身份运行? (进程监视器对于解决此类问题非常有用:设置一个过滤器,将 exe 的名称作为进程名称,然后查看失败的原因。)
  • 嗨 Peer,当我手动运行该应用程序时,它运行良好,就像它从正确的位置获取批处理文件并正常运行一样。该问题仅在通过任务调度程序运行时发生。无论如何,让我检查我的代码中的相对路径。