Skip to content

Instantly share code, notes, and snippets.

Created December 27, 2011 13:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/1523608 to your computer and use it in GitHub Desktop.
Save anonymous/1523608 to your computer and use it in GitHub Desktop.
Portable Ubunt(V4)uを起動後にrootfs.imgをバックアップするかどうか確認して、バックアップするためのスクリプト
//コマンドラインを
//wscript pubuntu.js
//
//としたショートカットをデスクトップなりクイック起動なりに作成して使用できます。
//**** この辺り編集して使用 ****
var prm_PUbuntu_dir = "C:\\Portable_Ubuntu_V4_slim2"; // Portable Ubuntu展開先フォルダ
var prm_Backup_dir = "\\\\LS-XHL546\\usbdisk1\\backup\\pubuntu"; // バックアップフォルダ
var prm_isMove = false; // 圧縮ファイルを残さない場合true
// コピーコマンド。指定しない場合FileSystemObject.CopyFileを使用する
// 以下の文字列は置換される
// <src> :コピー元ファイル名
// <dst> :コピー先ファイル名
// <dstdir> :コピー先フォルダ名
var prm_CopyCmd = "E:\\Tools\\FireCopy\\FFC.exe \"<src>\" /min /t /to:\"<dstdir>\"";
// 圧縮コマンド。指定しない場合は圧縮しない。この場合prm_isMoveをfalseにしておかないとimgファイルが移動してしまう
// 以下の文字列は置換される
// <src> :圧縮するファイル名
// <dst> :圧縮後ファイル名
var prm_CompressCmd = "\"C:\\Program Files\\ESTsoft\\ALZip\\alzipcon.exe\" -a -m4 \"<src>\" \"<dst>\"";
// 圧縮後のファイル名。以下の日付・時刻を入れることが出来る
// %y:西暦下2桁
// %Y:西暦
// %m:月(01~12)
// %d:日付(01~31)
// %H:24時間表記の時間(00~23)
// %M:分(00~59)
// %S:秒(00~59)
// %%:%文字
var prm_CompressFName = "rootfs_%y%m%d_%H%M.egg";
//**** ここまで ****
var g_objFileSys = new ActiveXObject("Scripting.FileSystemObject");
var g_objShell = WScript.CreateObject("WScript.Shell");
//**************************************************
// コピー
// 【引数】
// src_file コピー元ファイル
// dst_file コピー先ファイル
// is_over_write 上書きする?
// is_move 移動(コピー後コピー元ファイルを削除)する?
//
//**************************************************
function copy_file(src_file, dst_file, is_over_write, is_move)
{
var date_1, date_2;
var drv_src = g_objFileSys.GetDriveName(src_file);
var drv_dst = g_objFileSys.GetDriveName(dst_file);
// コピー/移動する必要があるかどうかを判別。同じ場所にあるファイルは処理しない
if ( g_objFileSys.FolderExists( dst_file ) ) // コピー先がフォルダの場合
{
if ( g_objFileSys.GetParentFolderName(src_file).toLowerCase() == dst_file.toLowerCase() )
return;
}
else if ( src_file.toLowerCase() == dst_file.toLowerCase() ) // コピー先がファイルの場合
return;
/*
if ( is_move )
WScript.Echo( "Move: " + src_file + " -> " + dst_file );
else
WScript.Echo( "Copy: " + src_file + " -> " + dst_file );
*/
date_1 = new Date();
if ( !is_over_write && is_move && drv_src == drv_dst )
g_objFileSys.MoveFile( src_file, dst_file );
else
{
if ( prm_CopyCmd == null || prm_CopyCmd == "" )
{
// 定義されてないとき、普通のコピーを使用する
g_objFileSys.CopyFile( src_file, dst_file, is_over_write );
}
else
{
var is_rename = false;
var org_src_file = "";
var s_cmd_line = prm_CopyCmd;
s_cmd_line = s_cmd_line.replace("<dst>", dst_file );
if ( s_cmd_line.indexOf( "<dstdir>" ) >= 0 )
{
if ( g_objFileSys.FolderExists( dst_file ) )
s_cmd_line = s_cmd_line.replace("<dstdir>", dst_file );
else
{
s_cmd_line = s_cmd_line.replace("<dstdir>", g_objFileSys.GetParentFolderName(dst_file) );
// src_file を適当な名前に変更(後でリネームする)
// コピー元とコピー先が同じ場合、問題有り
var d = new Date();
var new_src_file = g_objFileSys.GetParentFolderName(src_file);
new_src_file = g_objFileSys.BuildPath( new_src_file, g_objFileSys.GetTempName() );
g_objFileSys.MoveFile( src_file, new_src_file );
org_src_file = src_file;
src_file = new_src_file;
is_rename = true;
}
}
s_cmd_line = s_cmd_line.replace("<src>", src_file );
g_objShell.Run( s_cmd_line, 1, true );
if ( is_rename )
{ // 名前を変更する
var src_fname = g_objFileSys.GetFileName( src_file );
var dst_fname = g_objFileSys.GetFileName( dst_file );
if ( src_fname != dst_fname )
{
var dst_dir = g_objFileSys.GetParentFolderName( dst_file );
g_objFileSys.MoveFile(
g_objFileSys.BuildPath(dst_dir, src_fname),
g_objFileSys.BuildPath(dst_dir, dst_fname)
);
}
// 元ファイルの名前を元に戻す
if ( !is_move )
g_objFileSys.MoveFile( src_file, org_src_file );
}
}
// 移動の時は元ファイルを削除する
if ( is_move )
g_objFileSys.DeleteFile( src_file );
}
date_2 = new Date();
// WScript.Echo( (date_2.valueOf() - date_1.valueOf())/1000 + "sec" );
}
//**************************************************
// 圧縮
// 【引数】
// src_file コピー元ファイル
// dst_file コピー先ファイル
//
//**************************************************
function compress_file(src_file, dst_file)
{
if ( prm_CompressCmd == "" || prm_CompressCmd == null )
return 0;
else
{
var s_cmd_line = prm_CompressCmd;
s_cmd_line = s_cmd_line.replace("<dst>", dst_file );
s_cmd_line = s_cmd_line.replace("<src>", src_file );
// 最小化状態で起動。プログラムが受け付けないなら知らん。
return g_objShell.Run( s_cmd_line, 6, 1 );
}
}
// lenに足りない場合先頭に0を付加する
function to_fix_0str(val,len)
{
var ret = val.toString();
while ( ret.length < len ) ret = "0" + ret;
return ret;
}
function main_proc()
{
g_objShell.Run(g_objFileSys.BuildPath(prm_PUbuntu_dir, "pubuntu.exe"),10,1);
if ( g_objShell.Popup("バックアップする?",10,"バックアップ確認", 4+0x20+0x100) == 6
&& g_objShell.Popup("やっぱりやめとく?",0, "バックアップ確認", 4+0x20) == 7 )
{
var d = new Date();
var filename = prm_CompressFName;
filename = filename.replace("%y", to_fix_0str(d.getFullYear() % 100, 2) ); // %y:西暦下2桁
filename = filename.replace("%Y", to_fix_0str(d.getFullYear(), 4 ) ); // %Y:西暦
filename = filename.replace("%m", to_fix_0str(d.getMonth()+1, 2) ); // %m:月(01~12)
filename = filename.replace("%d", to_fix_0str(d.getDate(), 2 ) ); // %d:日付(01~31)
filename = filename.replace("%H", to_fix_0str(d.getHours(), 2 ) ); // %H:24時間表記の時間(00~23)
filename = filename.replace("%M", to_fix_0str(d.getMinutes(), 2) ); // %M:分(00~59)
filename = filename.replace("%S", to_fix_0str(d.getSeconds(), 2) ); // %M:分(00~59)
filename = filename.replace("%%", "%" );
if ( compress_file(
g_objFileSys.BuildPath(prm_PUbuntu_dir, "images\\rootfs.img"),
g_objFileSys.BuildPath(prm_PUbuntu_dir, "images\\" + filename) ) != 0 )
{
WScript.Echo( "圧縮失敗" );
return;
}
copy_file(
g_objFileSys.BuildPath(prm_PUbuntu_dir, "images\\" + filename),
g_objFileSys.BuildPath(prm_Backup_dir, filename),
true, prm_isMove );
}
}
main_proc();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment