我有一个 vbs 脚本,可以使用 MySQLDump 命令备份 MySQL 数据库文件。这个脚本运行正常,并且会为每天的备份(例如 20130110)创建一个新文件夹。
但是,该脚本还可以通过删除超过 x 天的文件夹来进行整理。
当我手动运行脚本时,它运行良好,但是当我在任务计划程序中设置脚本并将其设置为“无论用户是否登录都运行”(使用管理员用户帐户)时,任务失败。我认为问题出在权限上,但由于文件夹是由任务创建的,因此它们应该能够被任务删除。
顺便说一句,vbs 脚本使用 FileSystemObject DeleteFolder 命令执行删除...
任何意见,将不胜感激!
编辑 问题肯定出在 FileSystemObject DeleteFolder 命令上。我尝试将文件夹设置为让所有人拥有完全权限,但仍然没有效果...
答案1
答案如下:
设置操作时,不要将“程序/脚本”设置为包含路径(例如“C:\Scripts\Backup.vbs”),而需要将“程序/脚本”设置为“Backup.vbs”,并将“启动于”设置为“C:\Scripts\”
脚本现在可以正常工作了!
谢谢http://www.blogfodder.co.uk/2012/4/20/win-2008-task-scheduler-with-return-code-1-0x1对于建议...
答案2
您的任务的命令行是什么?任务产生的“上次运行结果”是什么?“历史记录”选项卡中是否显示任何错误或警告?您是否启用了 UAC,但忽略了检查“以最高权限运行”选项?
尝试在脚本中添加一些调试代码来隔离错误。我个人更喜欢记录到事件日志以避免文件系统权限问题。
Set sh = CreateObject("WScript.Shell")
sh.LogEvent 4, "marker 1"
' your code here
sh.LogEvent 4, "marker 2"
' more of your code here
sh.LogEvent 4, "marker 3"
' ...
这应该能让你大致了解代码中哪部分有问题。找到问题后,你可以添加更具体的调试代码,例如:
' some code
On Error Resume Next
' first instruction here
If Err Then ReportError "Error in 1st instruction"
' second instruction here
If Err Then Report Error "Error in 2nd instruction"
' ...
On Error Goto 0
' more code
Sub ReportError(txt)
CreateObject("WScript.Shell").LogEvent 1, txt & ": " & Err.Description _
& " (0x" & Hex(Err.Number) & ")"
WScript.Quit 1
End Sub