// 指定されたフォルダ内のスクリプトを全て実行するためのスクリプトを生成する。
// スクリプトファイルは拡張子(末尾が.sql)で判定する。
//定数の宣言
var ForReading = 1; //読み込み
var ForWriting = 2; //書きこみ(上書きモード)
var ForAppending = 8; //書きこみ(追記モード)
// スクリプト実行モード
var ForScripts = 0;
var ForTables = 1;
var objFileSys = new ActiveXObject("Scripting.FileSystemObject");
var currentFolderPath = String(WScript.ScriptFullName).replace(WScript.ScriptName, "");
editFile(currentFolderPath, ForScripts, "_out.sql");
ForReading = null;
ForWriting = null;
ForAppending = null;
ForTables = null;
ForScripts = null;
objFileSys = null;
currentFolderPath = null;
outPutFileName = null;
/* 指定されたフォルダのスクリプト全てを実行するためのファイルを
* 生成する。
* 引数は
* フォルダパス
* 生成モード
* (スクリプトを実行するだけなら 0, 今のテーブルを変更するなら 1)
* 生成されるスクリプトのファイル名
*/
function editFile(folderPath, mode, outPutFileName) {
if (!folderPath.match(/$/)) {
folderPath += '';
}
var objOutFile;
var tableName = '';
var folder = objFileSys.GetFolder(folderPath);
var files = new Enumerator(folder.Files);
try {
objOutFile = objFileSys.CreateTextFile(folderPath + outPutFileName , true);
for (; !files.atEnd(); files.moveNext()) {
if (files.item().Path.match(/.sql$/) &&
!files.item().Path.match(outPutFileName)) {
switch (mode) {
case ForScripts:
objOutFile.WriteLine('@"' + files.item().Path + '"');
break;
case ForTables:
tableName = files.item().Path.replace(/^.*([a-zA-Z_d]*).sql/g, "$1");
objOutFile.WriteLine('CREATE TABLE ' + tableName + '_BK AS SELECT * FROM ' + tableName + ';');
objOutFile.WriteLine('DROP TABLE ' + tableName + ';');
objOutFile.WriteLine('@"' + files.item().Path + '"');
objOutFile.WriteLine('EXEC P_MOVE_TABLE_ITEM('' + tableName + '_BK', '' + tableName + '');');
objOutFile.WriteLine('DROP TABLE ' + tableName + '_BK;');
objOutFile.WriteLine();
break;
}
}
}
objOutFile.Close();
} catch(e) {
WScript.echo("Error!");
WScript.echo(folderPath + outPutFileName);
} finally {
objOutFile.Close();
}
objOutFile = null;
strScriptPath = null;
return 0;
}