« ipod touch/iphone用EBPocketの辞書データ転送 | トップページ | クリップボードにアクセスするスクリプト »

2012年8月21日 (火)

TortoiseSVNでの変更ファイル等をcopyするwsf

TortoiseSVNでの変更ファイル等をcopyするバッチファイル
使っていましたが、ファイルやフォルダ名にスペース文字があったときなど
対応ができないので、困ることが多くなり、wsfで作り直しました。

以下がそれです。

<copytsvn.wsf>

<?xml version="1.0" encoding="Shift_JIS" standalone="yes" ?>
<package>
<job id="copytsvn">
<?job error="True" debug="True" ?>
<object id="objFs" progid="Scripting.FileSystemObject" />
<script language="JavaScript">
<![CDATA[

LISTTXT = "list.txt";
SRC_FOLDER = "AAA";
DST_FOLDER = "AAA_bk";

var strCurrentFolder = objFs.GetParentFolderName(WScript.ScriptFullName);
//WScript.Echo ("CurrentFolder : " + strCurrentFolder);

var strSourceFolder = strCurrentFolder + "\\" + SRC_FOLDER;
var strDestinationFolder = strCurrentFolder + "\\" + DST_FOLDER;
var strListText = strCurrentFolder + "\\" + LISTTXT;
var strTemp;

if(!objFs.FolderExists(strCurrentFolder))
{
WScript.Echo ("SourceFolderがありません");
}
else if(!objFs.FileExists(strListText))
{
WScript.Echo (LISTTXT + "がありません");
}
else if(objFs.FolderExists(strDestinationFolder))
{
WScript.Echo ("DestinationFolderが既に存在します");
}
else
{
objFs.CreateFolder(strDestinationFolder);//DestinationFolder作成
var objTs = objFs.OpenTextFile(strListText,1,false);//ReadOnlyでLISTTXTを開く

do{
  strLine = objTs.ReadLine();//1line読み出し
  //WScript.Echo ("> " + strLine);
  splitData = strLine.split("/");//'/'で区切る
  //WScript.Echo ("num: " + splitData.length);
  if(splitData.length == 0)
  {
   //処理しない
  }
  else
  {
   if(splitData.length == 1)//file copyのみ
   {
    //for file copy
    strTemp = splitData[splitData.length-1];//file pathの後半部分
   }
   else
   {
    //mkdir
    //strDestinationFolder;
    for(i=0; i<(splitData.length-1); i++)//最後の文字列はファイルであるとみなす
    {
     //WScript.Echo ("str: " + splitData[i]);
     if(i == 0)
     {
      strTemp = splitData[i];
     }
     else
     {
      strTemp = strTemp + "\\" + splitData[i];
     }
     if(!objFs.FolderExists(strDestinationFolder + "\\" + strTemp))
     {
      objFs.CreateFolder(strDestinationFolder + "\\" + strTemp);//Folder作成
     }
    }
   
    //for file copy
    strTemp = strTemp + "\\" + splitData[splitData.length-1];//file pathの後半部分
   }
   //file copy
   if(!objFs.FileExists(strSourceFolder + "\\" + strTemp))
   {
    WScript.Echo ("ファイル:" + splitData[splitData.length-1] + "がありません");
   }
   else
   {
    objFs.CopyFile(strSourceFolder + "\\" + strTemp, strDestinationFolder + "\\" + strTemp);//from,toの順
   }
  }
}while(!objTs.AtEndOfStream);

objTs.Close();
}

]]>
</script>
</job>
</package>

<このスクリプトの使い方>
copytsvn.batとほとんど変わりません。
作業フォルダで右クリック→tortoiseSVN→「変更をチェック」
として変更ファイル等を表示、copyしたいものをマウスでアクティブにして
右クリックで「クリップボードにパスをコピー」。
これを「パス」などファイル名以外がある行は削ってlist.txtとして保存、
作業フォルダが入っているフォルダに置く。
このスクリプトファイルを、作業フォルダが入っているフォルダに置き、スクリプト中の
SRC_FOLDERに元のフォルダ(上記のままなら"AAA")を、DST_FOLDERに出力フォルダ(上記のままなら"AAA_bk")を記述して保存する。
あとは実行(このスクリプトをクリック)するだけ。
(必要なフォルダを作りながらファイルをコピーします。)

|

« ipod touch/iphone用EBPocketの辞書データ転送 | トップページ | クリップボードにアクセスするスクリプト »

Subversion」カテゴリの記事

JavaScript」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: TortoiseSVNでの変更ファイル等をcopyするwsf:

« ipod touch/iphone用EBPocketの辞書データ転送 | トップページ | クリップボードにアクセスするスクリプト »