无论用户是否登录,任务计划程序在设置为运行时都无法打开批处理文件

问题描述 投票:14回答:7

操作系统:Windows Server 2008 R2 Enterprise

我在注销时无法让Task Scheduler运行.bat文件。我有一个我想要使用的生产.bat文件,但为了我的故障排除目的,我使用C:\ Users \ Administrator \ Desktop \ test.bat

test.bat非常简单。它包含的全部是:taskkill / im notepad.exe

它自己成功运行。如果我打开记事本并双击test.bat,则cmd窗口会闪烁并且记事本会死亡。 .bat文件不是问题。

我在Task Scheduler中创建的任务是“Test taskkill”(没有引号)。我可以在Windows资源管理器中看到它的位置:C:\ Windows \ System32 \ Tasks \ Test taskkill

如果任务设置为仅在用户登录时运行,则任务有效。使用此设置,我可以右键单击它>运行,我得到的行为就像双击.bat文件一样。这意味着任务配置正确。

如果我将其设置为运行,无论用户是否登录,那么当我右键单击>运行时,没有任何明显的事情发生。报告该作业已在历史记录中成功运行,但记事本仍然存在。我知道我正在使用正在配置的帐户的正确凭据来运行任务。该帐户是本地管理员。

此问题与过去其他问题类似:

Running a .bat file in Scheduled Task

http://social.technet.microsoft.com/Forums/windowsserver/en-US/d47d116e-10b9-44f0-9a30-7406c86c2fbe/scheduled-task-wont-run-bat-file?forum=winservermanager

第二个链接中的线程似乎为许多人解决了相同的问题,建议用于运行任务的帐户需要对.bat文件和.bat文件修改的所有文件的显式权限。这是非常有希望的(如果一个恼人的要求)。但是,我已经确认或为本地管理员分配了以下区域的显式权限,但我仍然没有成功:

  • C:\用户\管理员\桌面\
  • C:\用户\管理员\桌面\ test.bat的
  • C:\ WINDOWS \ SYSTEM32 \任务\
  • C:\ Windows \ System32 \ Tasks \ Test taskkill

此外,我已确认本地管理员帐户位于本地管理员组中。

我错过了一些需要设置的其他权限吗?还有什么我应该看的吗?谢谢!

batch-file scheduled-tasks windows-server-2008-r2
7个回答
23
投票

我在一家为我的机构做其他工作的承包商的帮助下解决了这个问题。

在任务的属性窗口中,在“操作”选项卡上,在创建或编辑打开批处理文件的操作时(在我的情况下为test.bat),有“Program / script:”字段,并且还有一个“开始”在(可选):“字段。我之前有“Program / script:”字段,其中包含文件的完整路径,以文件名结尾,我有“Start in(optional):”字段为null。在任务的属性窗口的“常规”选项卡中将任务设置为“仅在用户登录时运行”时,此配置似乎没有问题。但是,当任务设置为“运行用户是否登录时”时,此配置不起作用。

为了解决问题,我更改了操作,以便“Program / script:”字段仅包含文件名,而不包含文件路径。我将文件路径放在“开始(可选):”字段中。当任务设置为“仅在用户登录时运行”时,此配置有效!我已经测试了在触发器上运行的任务以及手动运行它。


3
投票

不确定这是否有帮助。我的问题是使用交互式程序(特别是Excel)。

创建2个空文件夹(桌面)解决了它。即使您在x64上运行,也要创建两者。

C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop

我调试了我的代码并实现了此行退出的代码

ExcelFile excelFile = new ExcelFile(directory, filename);

我在某处读到了这个解决方案,现在找不到URL了。


1
投票

我有类似的问题,但它与我的可执行批处理文件的路径中有一个空格的事实有关。我删除了空间,现在它工作正常。


1
投票

对我来说有用的是确保路径可用。

我用过net use Z:\ computername \ folder / persistent:yes

然后是xxcopy / s / c / d / e / i / y D:*。* z:\ BackupBat

我注意到我所有的其他.bat工作正常只有一个引用一个地图文件夹的那个没有运行,所以这需要成为问题。通过这些更改,bat文件运行良好。


0
投票

验证以下内容对我有用:

1)“如果用户未登录,则运行”任务计划程序中的选项不适用于交互模式的程序。示例记事本,时钟。任务不会以交互方式运行。确保您的程序不需要任何交互操作。

2)检查“启动(可选)”如果您的程序路径不是系统路径之一。最好在其中添加程序路径。在“程序/脚本”中,仅输入程序的名称,然后在“开始”中输入脚本的路径。

3)您为程序设置的用户帐户不仅必须拥有自己运行程序的权限,还必须拥有运行与程序相关的所有其他程序的权限。

这是一个示例程序:

OnC:\ myProgram \ Folders \ Test

date /t >> c:\Temp\testAuto.log
date /t >> c:\temp\testAuto.log
echo ----->> c:\temp\testAuto.log
cls
exit

- 创建任务,选择常规> SecurityOptions“运行用户是否登录” - 在“开始”C:\ myprogram \ folderOne -Run上的“操作”>“程序/脚本:test.cmd”中,您可能会看到cmd窗口打开和关闭非常快。 testAuto.log文件应位于c:\ tmp文件夹中。


0
投票

试试这个......

通过设置“作为批处理作业登录”安全策略,解决了“运行用户是否登录”的问题。

以下是有关设置的详细信息... https://danblee.com/log-on-as-batch-job-rights-for-task-scheduler/

您可以采取另一种方法,但这里是步骤... 1)我通过将我的管理员帐户(我将该任务激活)添加到“以批处理作业登录”安全策略来更新默认域组策略。 (即使列出了ADMIN组,我正在使用管理员帐户)2)我在客户端强制GPUPDATE 3)重新启动客户端4)查看客户端上的策略以确保它从DC完成5)设置任务“运行用户是否登录”6)按需运行任务,它可以创建PDF文件。 7)在预定时间注销并运行任务,它可以创建PDF文件。


-1
投票

可能是因为您没有权限。我遇到了同样的问题,我找到了这样的解决方案 - 打开任务计划程序右键单击您的任务,然后选择属性选项。在属性中,单击“常规”选项卡,然后单击“用户组或用户”并选择适当的用户。

© www.soinside.com 2019 - 2024. All rights reserved.