繁体   English   中英

Windows调度程序未执行批处理脚本,但是该脚本可以从命令行正常运行

[英]Windows scheduler isn't executing the batch script,but script works fine from command line

我想用今天的日期创建文件夹。 然后,我想将数据从远程计算机移至新创建的文件夹。

我写了一个批处理脚本,看起来像

我的批处理脚本。
名称:run.bat

::@ECHO off
SET CurrentDate= %date:~-4,4%_%date:~-10,2%_%date:~7,2%
SET CurrentDate=%CurrentDate: =%
"%SystemRoot%\System32\cmd.exe"  /c mkdir  "Z:\some_name_commercial\%CurrentDate%"
C:\Users\H213561\Documents\pscp.exe -l username -pw **** username@mftp.somename.com:/Distribution/somename_corp/*  "Z:\some_name_commercial\%CurrentDate%"

该脚本工作正常,当我从命令行运行上述脚本时,它可以完成我打算做的事情。 但是我无法在Windows Scheduler中安排脚本作为日常工作。

我尝试了什么!

我认为问题出在mkdir命令上,我尝试给出一个没有运气的完整路径。

"%SystemRoot%\System32\cmd.exe"  /c mkdir  "Z:\some_name_commercial\%CurrentDate%"

PS:Z:\\是已安装的NAS(网络驱动器)

更新:

当我的目标位置不是网络驱动器时,我可以使它工作。 但是,如果它是网络驱动器,则任务计划程序将不起作用。

这适用于Windows Vista和更高版本。 Vista对计划任务进行了重大安全更新。 目的是防止未登录用户时病毒通过网络传播。

您计划的任务设置可能存在问题。 假设Z:是映射的网络驱动器,则您计划的任务可能看不到映射。 驱动器映射属于用户,因此它们仅在创建映射的用户登录后才存在。

如果在任务设置中选择“以最高特权运行”,则任务计划程序将使用内置的管理员帐户。 该帐户是具有单独安全上下文的单独帐户。 此选项不会为选择运行任务的帐户分配更高的管理员特权-它使用单独的帐户。 内置的Administrator帐户将没有用户的驱动器映射。

在没有任何人登录的情况下运行时,任务管理器将使用与您看到的用户不同的用户身份验证过程。 这称为S4U身份验证,它拒绝访问网络资源,因此在这种情况下您也不会看到映射的驱动器。 而且由于根本无法使用网络资源,因此您也不能使用UNC。 因此,在那种情况下,它根本看不到映射的驱动器-甚至不使用UNC而不是驱动器映射。

使其运行的唯一方法是在启动计划任务时使用户实际登录,取消选中具有最高特权的运行以及将任务用户设置为以登录用户身份运行。

https://technet.microsoft.com/zh-CN/library/cc722152(v=ws.11).aspx

计划的任务可以根据您的设置在“不同的会话”中运行。

例如,如果您具有“仅在用户登录时运行” 在此处输入图片说明

然后,您可以看到计划的任务将在与用户相同的会话中运行。 如果用户未登录,该任务将不会运行。 该任务将看到用户的所有驱动器映射

在此处输入图片说明

如果设置为“无论用户是否登录都运行”,

在此处输入图片说明

然后,该进程将在另一个会话中运行,即所谓的- 会话0

在此处输入图片说明

在这种模式下,任务看不到用户的驱动器映射。

(1)选项1一种方法是在任务中显式映射驱动器

例如。

net use Z: /delete
net use Z: <share name>

然后,您的其余任务可以与Z一起使用:

(2)选项2

始终使用标准路径,即\\\\server name\\share name\\folder name

在大多数情况下,无论用户是否登录,都希望任务运行。 在这种情况下,您不应检查以下内容:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM