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")を記述して保存する。
あとは実行(このスクリプトをクリック)するだけ。
(必要なフォルダを作りながらファイルをコピーします。)
| 固定リンク
「Subversion」カテゴリの記事
- TortoiseSVNでの変更ファイル等をcopyするwsf(2012.08.21)
- svnのpre-lockスクリプト(windows)(2012.08.15)
- Subversionでのリビジョン削除(2012.08.13)
- subversionのコミットログを検索して置換(2010.09.02)
- subversionリポジトリを別のPC/サーバに移すときやること(2009.10.22)
「JavaScript」カテゴリの記事
- クリップボードにアクセスするスクリプト(2012.08.28)
- TortoiseSVNでの変更ファイル等をcopyするwsf(2012.08.21)
- svnのpre-lockスクリプト(windows)(2012.08.15)
- WSHでプログラムを実行する際のコンソールウィンドウを非表示に(2012.08.12)
- flotのx2axisを使って(2010.03.12)
この記事へのコメントは終了しました。
コメント