Windows環境バックアップスクリプト
自宅で使ってるバックアップスクリプトを晒します。というか、自宅環境のバックアップを1年以上取ってなかったみたい。危ねえ、、
ポイントは2点。
- バックアップ対象をショートカットで指定できるようにしたところ。
- スクリプトと同じフォルダにtargetという名前のフォルダを作成し、その中にショートカットを入れることでバックアップ対象とすることができる。
- バックアップを日付フォルダに保存するようにしたところ
- 同日内の重複実行を防ぎます。
- 以前いつバックアップしたか分かります。
'=== コピー時のオプション ============================ Const FOF_SILENT = &H04 '進捗ダイアログを表示しない。 Const FOF_RENAMEONCOLLISION = &H08 'ファイルやフォルダ名が重複するときは「コピー ~ 」のようなファイル名にリネームする。 Const FOF_NOCONFIRMATION = &H10 '上書き確認ダイアログを表示しない([すべて上書き]と同じ)。 Const FOF_ALLOWUNDO = &H40 '操作の取り消し([編集]-[元に戻す]や{ctrl}+{z})を有効にする。 Const FOF_FILESONLY = &H80 'ワイルドカードが指定された場合のみ実行する。 Const FOF_SIMPLEPROGRESS = &H100 '進捗ダイアログは表示するがファイル名は表示しない。 Const FOF_NOCONFIRMMKDIR = &H200 'フォルダ作成確認ダイアログを表示しない(自動で作成)。 Const FOF_NOERRORUI = &H400 'コピーや移動ができなかった場合の実行時エラーを発生させない。ただし、対象のファイルを飛ばして処理を続けるわけではないことに注意。 Const FOF_NORECURSION = &H1000 'サブフォルダ内のファイルはコピーしない(ただし、フォルダは作成される)。 '=== コピー用オブジェクトの生成 ====================== Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set backupFiles = CreateObject("Scripting.Dictionary") Set sh = WScript.CreateObject("WScript.Shell") Set shApp = WScript.CreateObject("Shell.Application") '=== バックアップホーム ============================== backupHome="\\LS-CHL18E\nas\backup\" '=== バックアップ先の作成 ============================= today = Date() yearString = YEAR(today) monthString = Right(0 & Month(today),2) dayString = Right(0 & Day(today),2) backupSaveDirName = yearString & "." & monthString & "." & dayString & "\" backupSaveDir = backupHome & backupSaveDirName If fso.FolderExists(backupSaveDir) = True Then WScript.Echo "本日は既にバックアップ済です。" WScript.Quit Else fso.CreateFolder(backupSaveDir) End If '=== バックアップ対象の取得 ========================== backupTargetDir="target" Set backupTarget = fso.GetFolder(backupHome & backupTargetDir) For Each file In backupTarget.Files Set link = sh.CreateShortCut(file) keyName = Replace( file.Name, ".lnk", "" ) backupFiles.Add keyName, link.TargetPath Next '=== バックアップ(コピー)実行 ========================== For Each target In backupFiles.Keys targetBackup = backupFiles(target) targetSaveDir = backupSaveDir Set targetSave = shApp.NameSpace(targetSaveDir) targetSave.CopyHere targetBackup, FOF_NOCONFIRMATION + FOF_NOERRORUI Next MsgBox "バックアップが完了しました。", _ vbOKOnly, _ "バックアップスクリプト"