修复计划任务不会为 .BAT 文件运行

如果您有一个 .BAT 文件,并且您正尝试使用Windows中的任务计划程序(Task Scheduler)使其自动运行,您可能遇到了除非您手动运行任务,否则它根本无法运行的问题。

我创建了一个批处理文件,该文件在计算机启动时删除临时文件夹中的所有内容。我在任务计划程序(Task Scheduler)中创建了一个基本任务,并希望最好。不幸的是,当我的电脑启动时,什么也没发生。经过大量的试验和错误,我想出了如何让脚本运行。

在本文中,我将引导您完成需要调整的设置和权限,以便让您的批处理文件在没有人工干预的情况下运行。

第 1 步:检查File/Folder权限

解决此问题的第一步是确保您用于在任务计划程序(Task Scheduler)中运行脚本的帐户对包含脚本的文件夹、脚本本身以及脚本在运行时触及的任何文件夹/文件具有完全控制权限。(Full Control)

例如,我在下面创建了以下批处理脚本:

set folder="C:\test"
cd /d %folder%
for /F "delims=" %%i in ('dir /b') do (rmdir "%%i" /s/q || del "%%i" /s/q)

我将.BAT文件保存到我的 Documents 文件夹中。路径是C:\Users\username\Documents。我去了 C:\Users\username,右键单击Documents文件夹,然后单击Properties。然后我点击了安全(Security)选项卡。

如您所见,用户帐户Aseem已被显式添加并授予完全控制(Full Control)权限。现在您必须对包含脚本的文件夹和脚本本身执行相同的操作。不要只是假设如果您授予包含脚本的文件夹的权限,您就可以开始了,因为您不是。最后,设置脚本将与之交互的任何文件和文件夹的权限。

就我而言,我必须转到C:\test,右键单击该文件夹并在其中添加具有完全控制(Full Control)权限的用户帐户。您必须这样做有点烦人,但这是让脚本运行的唯一方法。

注意:用于运行脚本的帐户必须是计算机上本地管理员组的一部分。就我而言,Aseem 帐户是管理员帐户,因此是本地管理员组的一部分。 (Note: The account that is being used to run the script has to be part of the local Administrators group on the computer. In my case, the Aseem account is an administrator account and therefore part of the local Administrators group. )

第 2 步:检查任务计划程序设置(Task Scheduler Settings)

现在让我们转到任务计划程序(Task Scheduler)并在那里更改适当的设置。打开任务计划程序并在(Task Scheduler)活动任务( Active Tasks)部分下找到您的任务。它们应按字母顺序列出。

双击它,它会在同一个窗口中自行打开任务。为了编辑任务,您必须右键单击它并选择Properties

有几个选项卡,这里有几件事需要检查和更改。首先,在“常规(General)”选项卡上,您需要检查用于运行任务的用户帐户。在我的例子中,它是我之前在文件系统上授予权限的Aseem帐户,它是计算机上(Aseem)管理员(Administrators)组的一部分。

接下来,您必须选择无论用户是否登录都运行( Run whether user is logged on or not)选项,然后在配置(Configure for)框中选择Windows Vista、Windows Server 2008 。

Actions选项卡上,您必须选择脚本,单击Edit ,然后在(Edit)Start in (optional)(e Start in (optional))框中添加包含脚本的文件夹的路径。这似乎没有必要,但事实并非如此。就我而言,我在框中输入了C:\Users\Aseem\Documents\

现在单击确定(OK)以保存设置。执行此操作时,可能会出现一个对话框,您必须在其中输入将运行任务的用户帐户的密码。这就提出了另一个要求。您不能使用没有密码的帐户。用户帐户必须有密码才能运行任务。

最后,您应该在任务计划程序(Task Scheduler)中手动运行一次任务以确保它运行。如果在您更改所有设置后手动运行正常,那么它应该在应该触发时运行。就我而言,它应该在启动时发生,在我进行更改后,一切正常。

请注意,如果您的脚本在运行时正在访问域中的不同计算机,您应该尝试使用域管理员帐户来运行任务。这将确保该帐户具有足够的权限来访问远程计算机。

要注意的另一项是您的脚本是否访问网络共享上的资源。如果您的脚本使用字母访问网络,它可能无法运行。例如,您应该在脚本中使用\\machinename\share_name\data\F:\data\如果您仍然无法运行您的脚本,请在此处发表评论,我会尽力提供帮助。享受!



About the author

我是一名软件工程师,拥有 Xbox Explorer、Microsoft Excel 和 Windows 8.1 Explorer 方面的经验。业余时间,我喜欢玩电子游戏和看电视。我拥有犹他大学的学位,目前在一家国际公司担任软件工程师。



Related posts