MySQLDumpコマンドを使用してMySQLデータベースファイルのバックアップを作成するvbsスクリプトがあります。これは完全に機能しており、毎日のバックアップ用に新しいフォルダーを作成します(例:20130110)。
ただし、スクリプトは、x日より古いフォルダーを削除することによって整理することも目的としています。
スクリプトを手動で実行すると完全に機能しますが、タスクスケジューラでスクリプトを設定し、(ユーザーがログオンしているかどうかに関係なく実行する)に設定すると(管理者ユーザーアカウントを使用)、タスクが失敗します。問題は権限にあると思いますが、フォルダはタスクによって作成されるため、タスクによって削除できるはずです。
ところで、vbsスクリプトはFileSystemObjectDeleteFolderコマンドを使用して削除を行います...
アドバイスをいただければ幸いです。
編集問題となっているのは間違いなくFileSystemObjectDeleteFolderコマンドです。フォルダーをEveryone、完全なアクセス許可を持つように設定しようとしましたが、それでも喜びはありません...
答えは次のとおりです。
アクションを設定するときは、パスを含めるように「プログラム/スクリプト」を設定するのではなく(「C:\ Scripts\Backup.vbs」など)、「プログラム/スクリプト」を「Backup.vbs」として設定する必要があります。 'Start in' as "C:\ Scripts \"
スクリプトが機能するようになりました。
http://www.blogfodder.co.uk/2012/4/20/win-2008-task-scheduler-with-return-code-1-0x1 の提案に感謝します...
あなたのタスクのコマンドラインは何ですか?タスクによって生成される「最終実行結果」とは何ですか? [履歴]タブにエラーや警告が表示されますか? 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