从Windows任务计划程序客户端在共享驱动器上运行Java应用程序

时间:2013-04-12 18:42:12

标签: java vbscript batch-file cmd windows-scheduler

首先,我想提前感谢大家帮忙解决这个问题,让我带你去旅行......

任务:使用Windows任务计划程序运行位于文件服务器上的文件夹中的Java应用程序,这很简单。

需要注意的是,我想利用“运行用户是否登录”的任务调度程序选项。这似乎是一个棘手的功能...

我已将帐户设置为要在其下运行任务的帐户。

我尝试了什么?

根据以下操作创建任务:

Java.exe -jar“共享jar的路径”

Java.exe -jar“本地jar的路径”

Javaw.exe -jar“共享jar的路径”

Javaw.exe -jar“本地jar的路径”

所有与“运行是否登录使用”的结果相同。选项:0x1

接下来,我尝试创建一个批处理文件来代表我运行它,并将任务更改为运行该批处理文件,我得到了所有相同的结果。我已经读过,利用动作的“开始(可选)”字段可以解决问题,但事实并非如此。

之后,我创建了一个.vbs文件,代码类似于以下代码:

设置WshShell = CreateObject(“WScript.Shell”)

WshShell.Run chr(34)& “C:\ Batch Files \ syncfiles.bat”& Chr(34),0

设置WshShell = Nothing

这实现了“静默运行”,但任务调度程序仍未运行“运行是否使用登录。”,并以0x1结束。

所有这些都可以正常使用“仅在用户登录时运行”。选项。

无论我是否登录,我想这样做的原因是因为我想在上班前运行我的应用程序。

更新 我已经解开了一些东西。在Windows的电源选项中,我必须启用计划任务唤醒计算机的能力,对此感到有些愚蠢。

使用更简单的任务 - 只创建一个空白文本文件 - 这个选项工作正常。我相信问题在于执行Java。

1 个答案:

答案 0 :(得分:1)

任务需要用户运行。当然,它不一定是登录的用户,但无论如何都需要用户。

  1. 创建一个手动启动时可用的批处理文件(或等效文件)
  2. 使用您的密码和所有内容安排相同的批处理文件(使用cmd /c c:\full\path\to\batch.bat)自行运行。
  3. 现在您已准备好调试问题
  4. 用户Windows将用于在没有人登录时运行您的任务需要配置和工作的所有工具。例如,本地服务是否设置了所有路径和注册表设置?该用户可以读取该共享(SYSTEM帐户没有网络凭据)。

    要帮助调试,请使用psexec。此命令行将允许您在SYSTEM帐户下运行脚本。像

    这样的东西
    psexec -dies cmd /c c:\full\path\to\batch.bat
    

    +欢迎来到SO!