将脚本作为计划任务运行时出现“找不到路径”

Posted

技术标签:

【中文标题】将脚本作为计划任务运行时出现“找不到路径”【英文标题】:"Path not found" when running a script as scheduled task 【发布时间】:2018-02-14 20:24:20 【问题描述】:

我有一个 VBScript 脚本,当我手动运行时,它运行良好,但是当我将它作为计划任务运行时,来自Err.Description 的错误是“找不到路径”。

我已经在定时任务中设置了路径。 我还在脚本本身中设置了当前工作目录。 我已将计划任务设置为以我登录的用户的“最高权限”运行。 我已尝试在 filename 变量中指定完整路径(尽管已从下面的示例中删除) 我已尝试指定带有和不带有最后斜线的各种路径。

(注意:下面的示例是实际脚本的子集/修改版本,为了便于阅读本题)

Set fs = CreateObject("Scripting.FileSystemObject") 
Set shell = CreateObject("WScript.Shell")
shell.CurrentDirectory = "C:\backupscompressed"
Set logfile = fs.OpenTextFile("copy files.txt", 8, True) 

Function logwrite(m) : logwrite = logfile.WriteLine(Now & " : " & m) End Function

Function copytootherserver(filename)
    On Error Resume Next
    dest = "\\172.17.201.12\Backups\Copied from Primary DB Server\"
    logwrite "Copying """ & filename & """ to """ & dest & """"
    fs.CopyFile filename, dest

    If Err.Number <> 0 Then
        logwrite "Error occured: " & Err.Description
    End If
End Function

logwrite "Beginning Script"

db1_zipfile = "db1.zip"
db2_zipfile = "db2.zip"
db3_zipfile = "db3.zip"

copytootherserver db1_zipfile
copytootherserver db2_zipfile 
copytootherserver db3_zipfile

logwrite "Ending Script"

编辑:我用shell.Run 调用robocopy 替换了fs.CopyFile。当我手动运行时,它可以工作。当我从计划任务运行时,它显示"ERROR 1326 (0x0000052E) Accessing Destination Directory \\172.17.201.12\Backups\Copied from Primary DB Server\ Logon failure: unknown user name or bad password.",所以我猜计划任务没有使用其他服务器上此共享文件夹的存储凭据。那么有没有办法让它使用存储的凭据?还是我必须将该文件夹设置为“所有人”的完全控制?

【问题讨论】:

【参考方案1】:

似乎直接运行脚本时它能够使用目标服务器的缓存凭据,但是当通过计划任务运行时它没有这样做,所以我通过添加目标服务器的凭据解决了这个问题:

Control Panel-&gt;User Accounts-&gt;"Manage your network passwords"

在目标服务器上添加适当的用户帐户后,脚本现在可以从计划任务成功运行。

(注意:这些服务器不是域的成员)

【讨论】:

以上是关于将脚本作为计划任务运行时出现“找不到路径”的主要内容,如果未能解决你的问题,请参考以下文章

当我尝试将任务计划程序中的信息导出到 csv 文件时出现错误:无效的参数/选项 - '>'

AutoIt 脚本可以在未登录时作为计划任务运行吗?

作为计划任务运行 Visual Basic 脚本询问我要如何打开文件

作为计划任务运行时,Powershell 脚本无法访问文件

使用节点运行脚本的计划任务将不起作用

从计划任务运行 perl Plackup 脚本