【JavaScript】バックアップを作成するバッチ

バックアップを作成するバッチをjavascriptで書いてみました。

使い方は簡単で、本記事のコードをJS形式で保存し、任意のフォルダに配置すればOKです。ダブルクリックで実行し、同一階層にあるファイルのバックアップをとります。

 

【処理内容(実行されると・・)】

  1. 同一階層に「__Backup」フォルダがないか確認し、なければ当該フォルダを作成します。
  2. 「__Backup」フォルダ内にバックアップ用フォルダ(年月日_時分秒としました)を作成します。
  3. バックアップ用フォルダへのバックアップを開始します。

f:id:cochineal19:20201121173347p:plain

バックアップ処理の流れ(例)

///--- 関数:ゼロ埋め ---///
function ZeroPadding(tval){
  return('00'+tval).slice(-2);
}

///--- 関数:バックアップ実行 ---///
function Backup_Exec(){
  var fso = WScript.createObject("Scripting.FileSystemObject");

  //-- このスクリプトファイルのパス取得
  var ThisScriptPath = WScript.ScriptFullName;
  var ThisFolderPath = fso.GetParentFolderName(ThisScriptPath);
  var ThisScriptName = fso.GetFileName(ThisScriptPath);

  //-- 保存先設定 yyyymmdd_hhmmdd
  var now              = new Date();
  var BackupFolderName = now.getFullYear() + 
                         ZeroPadding(now.getMonth() + 1) + 
                         ZeroPadding(now.getDate()) + 
                         "_" +
                         ZeroPadding(now.getHours()) + 
                         ZeroPadding(now.getMinutes()) + 
                         ZeroPadding(now.getSeconds())
                         ;
  var BackupRootPath   = ThisFolderPath + "/__Backup/";     //バックアップの親フォルダ
  var BackupFolderPath = BackupRootPath + BackupFolderName; //バックアップ用のフォルダ
  
  //-- バックアップの親フォルダが無ければ先に作る。
  if (!fso.FolderExists(BackupRootPath)){
    fso.CreateFolder(BackupRootPath);
  }

  //-- バックアップ用のフォルダ作成。
  fso.CreateFolder(BackupFolderPath);
  
  //-- このスクリプトと同じフォルダ階層のファイルをバックアップ用フォルダにコピー。
  fso.CopyFile(ThisFolderPath + "/*", BackupFolderPath)
  
  //-- このスクリプトもコピーされちゃうので削除
  if (fso.FileExists(BackupFolderPath + "/" + ThisScriptName)){
    fso.DeleteFile(BackupFolderPath + "/" + ThisScriptName)
  }
  
  //-- 後始末
  fso              = null;
  now              = null;
  ThisScriptPath   = null;
  ThisFolderPath   = null;
  ThisScriptName   = null;
  BackupFolderName = null;
  BackupRootPath   = null;
  BackupFolderPath = null;

  WScript.Echo("終了しました");
}

///--- 実行 ---///
var shell = WScript.createObject("WScript.Shell");
var pop = shell.Popup("バックアップを作成しますか?",0,"バックアップ作成", 1 + 48);
if (pop == 1){
  Backup_Exec(); //「はい」が選択されたらバックアップ実行。
} else {
  WScript.Echo("処理を中止しました。"); //「キャンセル」が選択されたら中止。
}
shell = null;
pop   = null;

 

中身はFileSystemObjectを使ってます。

 

コマンドプロンプトでも良いですが、、

javascript触る機会少ないので、javascriptで書いてます(個人的な理由)。

本ブログは個人メモです。 本ブログの内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。