folder_backup.js

Last-modified: 2014-08-16 (土) 12:41:50 (2183d)

フォルダの末尾に日付をつけてバックアップを作成する

folder_backup.js

function systemQuit(strExitMessege){
	if(strExitMessege) WScript.Echo(strExitMessege);
	WScript.Quit();
}

if(!WScript.Arguments.length) systemQuit("フォルダ/ファイルを引数で指定してください");

var fso = new ActiveXObject("Scripting.FileSystemObject");

//if(!fso.FolderExists(WScript.Arguments(0))) systemQuit("フォルダを引数で指定してください");

if(WScript.Arguments(0).match(/\d{8}$/)) systemQuit("末尾が数字8桁のフォルダ/ファイルはコピーできません");

//日付設定
year  = new Date().getFullYear();
month = new Date().getMonth() + 1;
month = (month < 10 ) ? "0" + month : month;
day   = new Date().getDate();
day   = (day < 10 ) ? "0" + day : day;
strToday = "" + year + month + day; //string型にキャスト

if(fso.FolderExists(WScript.Arguments(0))){ //■フォルダの場合
	
	objFolder = fso.GetFolder(WScript.Arguments(0));
	
	//既にフォルダがあればキャンセル
	if(fso.FolderExists(WScript.Arguments(0)+"."+strToday)) systemQuit("フォルダが既に存在します");
	
	var intFolderSize = Math.floor(objFolder.size / 10000000);
	if(intFolderSize > 50){ //もし50MB以上なら
		var WshShell = WScript.CreateObject("WScript.Shell");
		switch(WshShell.Popup("フォルダが"+intFolderSize+"MBですが実行しますか?",0,"folder_backup",49)){
		case 1:
			break;
		default:
			systemQuit("キャンセル");
			break;
		}
	}
	
	fso.CopyFolder(WScript.Arguments(0),WScript.Arguments(0)+"."+strToday);
	
}else if(fso.FileExists(WScript.Arguments(0))){ //■ファイルの場合
	
	//既にファイルがあればキャンセル
	if(fso.FolderExists(WScript.Arguments(0)+"."+strToday)) systemQuit("ファイルが既に存在します");
	fso.CopyFile(WScript.Arguments(0),WScript.Arguments(0)+"."+strToday);
	
}else{
	 systemQuit("フォルダ/ファイルを引数で指定してください");
}
WScript.Echo("コピー完了");

「送る」フォルダ(shell:sendto)に入れとくと便利