インデックス作成バッチファイル(Hyper Estraier)
mkindex.batとでも名前を付けてaccountsフォルダーに保存。
cd /d %0\..
for /d %%A in (*) do (
cd "%CD%\%%A"
estcmd gather -cl -fm -cm -sd ".\index" ".\msg"
)
estcmdの部分を下記に変えるとそれぞれ
estcmd purge -cl ".\index" (削除メールのインデックス削除)
estcmd optimize ".\index" (インデックスの最適化)
ができるので、別のバッチファイルとしてそれぞれ保存すればいい。
どれもaccounts以下のすべてのアカウントに対して行います。
estcmd purge -cl ".\index" (削除メールのインデックス削除)
estcmd optimize ".\index" (インデックスの最適化)
ができるので、別のバッチファイルとしてそれぞれ保存すればいい。
どれもaccounts以下のすべてのアカウントに対して行います。
Hyper Estraierのインデックス作成の高速化
すでにインデックス化されたメールを無視して新規のメールのみインデックス化させる方法です。
1) Qmail3のオプション-検索をカスタムにして、更新のところを下記に変更。
1) Qmail3のオプション-検索をカスタムにして、更新のところを下記に変更。
cscript qm_gather.js "$index" "$msg"
2)下記をqm_gather.jsとしてqmail3と同じフォルダに保存
var ARGV, index,msg;
var WshShell = new ActiveXObject('WScript.Shell');
ARGV = WScript.Arguments;
index = ARGV(0);
msg = ARGV(1);
var objExec = WshShell.Run('cmd /C cscript //B find.js "' + msg + '" | estcmd gather -cl -fm -cm -sd "' + index + '" -', 10, true);
var objExec = WshShell.Run('cmd /C estcmd create -attr from seq -attr to seq -attr cc seq -attr subject seq -attr @cdate seq "' + index + '"',10,true);
3)accountsフォルダとqmail本体のあるフォルダにfind.jsという名前で次行以下を保存。
var ARGV, index,msg;
var WshShell = new ActiveXObject('WScript.Shell');
var fso = new ActiveXObject("Scripting.FileSystemObject");
ARGV = WScript.Arguments;
msg = ARGV(0);
msg = msg.replace("\\","\\\\");
var fldr, fs, fc, f;
fldr = fso.GetFolder(msg);
fs = new Enumerator(fldr.SubFolders);
for (;!fs.atEnd(); fs.moveNext()){
fc = new Enumerator(fs.item().files);
for (; !fc.atEnd(); fc.moveNext()){
f = fc.item();
if(f.attributes && 32){
f.attributes = f.attributes - 32;
WScript.StdOut.WriteLine(f);
}
}
}
<注意>
必要なときに全文検索窓の「インデックスの更新」を押せば、インデックス化されていないメールのみをインデックス化するので早くなります。
ただし、アーカイブ属性の確認を毎回行うので、この部分をもっとうまく処理すれば更なる高速化が可能です。
必要なときに全文検索窓の「インデックスの更新」を押せば、インデックス化されていないメールのみをインデックス化するので早くなります。
ただし、アーカイブ属性の確認を毎回行うので、この部分をもっとうまく処理すれば更なる高速化が可能です。
さらに、これに対応する全アカウントに対する新規メールインデックス化を行うためのバッチは下記のとおり。
mkindex.batとでもして次行以下をaccountsフォルダに保存
cd /d %0\..
for /d %%A in (*) do (
cd "%CD%\%%A"
cscript //B ..\find.js ".\msg" | estcmd gather -cl -fm -cm -sd ".\index" -
estcmd create -attr from seq -attr to seq -attr cc seq -attr subject seq -attr @cdate seq -attr message-id seq ".\index"
)
おいらはタスクスケジューラでアイドル時にこれを実行させてます。
estcmd createの行は、属性検索を使わなければ不要です。
estcmd createの行は、属性検索を使わなければ不要です。
AHK常駐版インデックス作成バッチファイル(Hyper Estraier)
「Hyper Estraierのインデックス作成の高速化」のアイドル時実行関係をAutoHotKeyにやらせる版です。
MailBoxDirを環境に合わせて変えて、mkindex.ahkとでもしてどこでもいいんで保存して実行してください。
常駐して、10分間操作がなかったら全アカウントインデックス化します。
パイプ処理の方法が分からなかったので一時ファイル作成・削除をしてます。ご利用は自己責任で。
MailBoxDirを環境に合わせて変えて、mkindex.ahkとでもしてどこでもいいんで保存して実行してください。
常駐して、10分間操作がなかったら全アカウントインデックス化します。
パイプ処理の方法が分からなかったので一時ファイル作成・削除をしてます。ご利用は自己責任で。
#Persistent
#SingleInstanceSetBatchLines, -1 ; Make the operation run at maximum speed.
;DefIcon=D:\MyDoc\icon\famfamfam_silk_icons_v\icons\clock.ico ;通常タスクトレイアイコン
;WorkIcon=D:\MyDoc\icon\famfamfam_silk_icons_v\icons\clock_red.ico ;処理中タスクトレイアイコン
;Menu,TRAY,Icon,%DefIcon%
;=======================================================
;main
;=======================================================
SetTimer,IndexMail,1000
return
;-------------------------------------------------------
;メールインデックス処理
;-------------------------------------------------------
IndexMail:
If A_TimeIdlePhysical>600000 ;10分以上操作を行っていなければやる
{if IndexMailFlag<>1 { gosub, DoIndexMail IndexMailFlag=1 }}
else
{IndexMailFlag=0}
return
;-------------------------------------------------------
;メールインデックス実処理
;-------------------------------------------------------
DoIndexMail:
;Menu,TRAY,Icon,%WorkIcon%
SplashTextOn, , , メールインデックス更新中
MailBoxDir=D:\bin\QMAIL3\mail\accounts ;accountsフォルダの指定
AMailList=%MailBoxDir%\AMailList.txt ;処理対象ファイルリスト名
Loop, %MailBoxDir%\*, 2
{IfExist, %AMailList% ;処理対象ファイルリストが既にあったらなんもしない { Msgbox, %AMailList% が既に存在します } else { IndexDir=%A_LoopFileLongPath%\index Loop, %A_LoopFileLongPath%\*.msg, , 1 { IfInString, A_LoopFileAttrib , A { FileAppend, %A_LoopFileLongPath%`n, %AMailList% FileSetAttrib, -A } } IfExist, %AMailList% { runwait, estcmd gather -cl -fm -cm -sd %IndexDir% %AMailList%, , Hide FileDelete, %AMailList% } }}
SplashTextOff
;Menu,TRAY,Icon,%DefIcon%
return