操作系统: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
第二个链接中的线程似乎为许多人解决了相同的问题,建议用于运行任务的帐户需要对.bat文件和.bat文件修改的所有文件的显式权限。这是非常有希望的(如果一个恼人的要求)。但是,我已经确认或为本地管理员分配了以下区域的显式权限,但我仍然没有成功:
此外,我已确认本地管理员帐户位于本地管理员组中。
我错过了一些需要设置的其他权限吗?还有什么我应该看的吗?谢谢!
我在一家为我的机构做其他工作的承包商的帮助下解决了这个问题。
在任务的属性窗口中,在“操作”选项卡上,在创建或编辑打开批处理文件的操作时(在我的情况下为test.bat),有“Program / script:”字段,并且还有一个“开始”在(可选):“字段。我之前有“Program / script:”字段,其中包含文件的完整路径,以文件名结尾,我有“Start in(optional):”字段为null。在任务的属性窗口的“常规”选项卡中将任务设置为“仅在用户登录时运行”时,此配置似乎没有问题。但是,当任务设置为“运行用户是否登录时”时,此配置不起作用。
为了解决问题,我更改了操作,以便“Program / script:”字段仅包含文件名,而不包含文件路径。我将文件路径放在“开始(可选):”字段中。当任务设置为“仅在用户登录时运行”时,此配置有效!我已经测试了在触发器上运行的任务以及手动运行它。
不确定这是否有帮助。我的问题是使用交互式程序(特别是Excel)。
创建2个空文件夹(桌面)解决了它。即使您在x64上运行,也要创建两者。
C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop
我调试了我的代码并实现了此行退出的代码
ExcelFile excelFile = new ExcelFile(directory, filename);
我在某处读到了这个解决方案,现在找不到URL了。
我有类似的问题,但它与我的可执行批处理文件的路径中有一个空格的事实有关。我删除了空间,现在它工作正常。
对我来说有用的是确保路径可用。
我用过net use Z:\ computername \ folder / persistent:yes
然后是xxcopy / s / c / d / e / i / y D:*。* z:\ BackupBat
我注意到我所有的其他.bat工作正常只有一个引用一个地图文件夹的那个没有运行,所以这需要成为问题。通过这些更改,bat文件运行良好。
验证以下内容对我有用:
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文件夹中。
试试这个......
通过设置“作为批处理作业登录”安全策略,解决了“运行用户是否登录”的问题。
以下是有关设置的详细信息... https://danblee.com/log-on-as-batch-job-rights-for-task-scheduler/
您可以采取另一种方法,但这里是步骤... 1)我通过将我的管理员帐户(我将该任务激活)添加到“以批处理作业登录”安全策略来更新默认域组策略。 (即使列出了ADMIN组,我正在使用管理员帐户)2)我在客户端强制GPUPDATE 3)重新启动客户端4)查看客户端上的策略以确保它从DC完成5)设置任务“运行用户是否登录”6)按需运行任务,它可以创建PDF文件。 7)在预定时间注销并运行任务,它可以创建PDF文件。
可能是因为您没有权限。我遇到了同样的问题,我找到了这样的解决方案 - 打开任务计划程序右键单击您的任务,然后选择属性选项。在属性中,单击“常规”选项卡,然后单击“用户组或用户”并选择适当的用户。