1. 本目录下的文件说明
tagdata.lst 数据格式: mmddhhmmss=In$Tn$Fn$keywords,keywords$路径标题$YY-MMDD$
该格式是为了StringSplit方便,同时为了使pevlov/wOxxOm的代码基本不变。
其中
mmddhhmmss: 固定长度10,便于StringLeft/SubStr获得
In: 表示文件的重要性,固定长度1, 默认为0。用于文件重要性管理。采用10个按钮表示,
检索时输入 =1得到所有1级
Tn: 保留,默认为0。用于记录文件被访问的次数。
Fn: 保留,默认为0。用于在UpdateLnks时,根据数字确定是否采用标题更新文件名和Modification Time
路径标题: 在首次添加tag时从所在阅读软件(Pdf-XCViewer, MsWord, UniversalViewer, Explorer, Maxthon2)中读取,
合并时,保留原有的标题,
虽然可以根据标题的时间来判断哪个标题是更新的标题,但是这个功能不急迫。
YY-MMDD: 最近添加标签的时间
ToUpdate.lst 一些文件的创建时间没有更新到2050年之后,定期检查该文件进行更新。
更新后的文件即使拷贝到其他电脑也能快速的发现和重建lnk。
UsedList.lst 同tagdata.lst,但是保存的是最近访问的文件,基本上100项是够用的。本来准备在数据后面加上$Visit Date$
但是似乎不必要。
tagdata.bak 是tagdata.lst文件的备份,采用FileMove生成
用于误操作后恢复。每次启动时,判断A_Now与LastBackupTime的事件差,超过1天备份一次。
如果能采用增量备份当然更好。
Tagging.ahk 功能:检索tag
检索方式1: 检索tagdata.lst
检索方式2: 浏览tagcloud.lst
UpdateLnks.ahk 功能:更新lnk文件,如果在Explorer/MDIE里面按快捷键
更新方式1: 在Explorer或者MDIE里面对指定路径UpdateLnks
更新方式2: 根据PathList更新
更新方式3: 用es.exe搜索文件,然后用UpdateLnks读取文件lst。
所有方式都是根据文件的Creation Time确定是否更新Lnk。
ini.ahk 在内存里操作ini文件的库,Tuncay开发。
2. tagdata.lst结构说明
按时间[dd]分区
如果一个文件的Creation Time是5月6日,就分到 [6]
这样进行合并和搜索时非常快速。之前考虑采用[mm]分为12个区,考虑到以后数据库更大,所以采用按天分为31区。
3. 搜索说明
搜索时,首先将tagdata.lst读入内存变量,然后采用增量搜索进行快速定位。
搜索排序时,输入=1即返回级别1的文献
搜索最近添加标签时,输入-0510即返回5月10标签过的文献,10-05返回2010年标签过的文献。
4. 批量更新
批量更新时,主要用于文件拷贝到新的电脑,需要更新lnk。比起合并数据库记录,这个功能不是特别必要,
而且我们已经设置了2050特殊标记,以后开发都可以。暂时采用如下方式折中。
方式1:采用Everything的es.exe搜索文件标题,由于重要文献的文件名具有一定稳定性,可以由用户从符合要求的文献中选择。
方式2:搜索到结果是发现
5. 合并tagdata说明
合并过程为对文件A的keys读取,
keysA := ini_getAllKeyNames(Aini, "Section")
keysB := ini_getAllKeyNames(Bini, "Section")
然后检查KeysA中的key是否出现在KeysB中。合并速度主要取决于InStr的运行次数和RegExReplace的运行时间。
合并时,首先检查A和B的关键词是否一样,一样则跳过。
A文件keywords(不包括标题)按照 ,(英文逗号) 解析,然后用InStr判断B文件中 标题和关键词是否有此词组,
没有则添加该词组。所以要求添加关键词时采用,作为连接符号,便于目测。
注意先采用Regex对,两侧的空格进行Trim,便于使用 If var in list
合并时,保留原有的路径标题,index等属性
由于合并时数据中间部分有变动,所以采用ini_replaceValue(),而不是ini_insertValue()。
6. 操作效率说明
1 对于硬盘的一些目录进行搜索,如果Creation Time日期在2050之后的,则
判断是否需要更新 .lnk
2 采用sort对tagdata.lst的key进行sort,有利于提高import时合并的效率。
7. tag网操作
哲学思想是如果觉得文件A和B相关,那么可以快速为A和B连线,这条连线应该有一个代号和说明,以及线的粗细。
在数据库文件 tagnet.lst里面的[xx]块中,采用如下方式表示关联文件。
tagxxxxxx=说明文字$050602131245,051203214567,...$
tagaaaaaa=说明文字$050502131245,051003214567,...$
tagbbbbbb=说明文字$tagxxxxxxx,tagaaaaaa,...$
其中xxxxxx为tag创建时间yymmddhhmmss,说明文字为
如果tagbbbbbb的两端均为tag,则意味着tagbbbbbb是更上一层目录。
具体操作如下:
在文件A编辑软件中按F1,弹出菜单
1 选择新建tag,默认为在root下创建,同时记入临时tag集
如果希望新建tag加入现有的tag集中成为子集,进入浏览模式
双击tag集,浏览tag子集,选择某tag集,然后点击[新建]按钮
在文件A编辑软件中按F1,弹出菜单
1 选择浏览现有tag集,即把现有的所有tagxxxxxx(以及说明文字)列举出来。
可以按照树状图浏览,也可以选择按照创建时间排序,便于快速定位临时tag集,
2 可以令本文件加入某tag集,即选择相应tag,点击[连接]按钮。
后台修改tagxxxxxxx的记录。
在文件A编辑软件中按F1,弹出菜单
1 选择显示相关Tag,弹出taggingnet窗口,上半部分的ListView列举相应taglink以及说明
下面的ListView列出关联文件的属性。
也可采用类似思维导图的方式显示与当前文件相关的文件,以及连线的说明。
目前阶段,简化操作,假设文件a中按下Ctrl+Shift+C,获得完整路径FullPath,
然后在文件b中按下Ctrl+Shift+V, AutoHotkey代码将
自动在本页面粘贴“参见:%FullPath%”,同时输入 Enter, Ctrl+Shift+Numpad-
用户在对话框中可以添加和修改注释,例如该文章从另一个角度。。。
当用户输入完之后点击中键,如果当前光标为 IBeam 或者 SizeAll,则自动双击,然后Ctrl-A,然后解析,
如果光标为Unknow,则不做处理。如果解析成功,显示tooltip,更新tag-link成功
同时自动生成tag-link,将当前页号也记录下来。
同时在tagdata.lst修改记录,数据格式是在两个文件的VisitTime之后添加相应链接文件的TagIndex和页面号,即xxxxxxx:n。
浏览文件时,在任何编辑软件中菜单查看相关文献,或按 Ctrl+Alt+`(按右边的Ctrl+Alt更方便),
自动打开当前文件TagIndex.net文件,从而显示当前文件相连接的文件以及注释信息。
如果想打开关联文件,选中对应文件的TagIndex,按下快捷键Ctrl+Shift+O 打开相应文件,
(采用IfWinActive Tag ahk_class Notepad 判断), F1弹出菜单可以有更多操作:
打开TagIndex所在目录|打开TagIndex文件|在Tagging中搜索TagIndex
检索时,在Tagging.ahk主界面,对选中行,
1 右键菜单选择查看关联文件,后台记录下LastIndex=xxxxxxx,CurrIndex=yyyyyy。
可以在输入框输入xxxxxxx, 列出关联文件,但是不会显示用户注释,需选择某一行,然后右键菜单选择查看关联注释,
这样可以在关联文件之间快速穿行。同时提供访问记录
2 右键直接选择查看关联注释。直接打开关联注释文件。
关联注释文件格式 xxxxxxx.net
[yyyyyyy]
page=n
comment=用户添加的注释
考虑到建立net的情况不多,采用每个文件具有单独的.net文件。也便于直接修改。
8. 穿透视图
在\Tags目录下创建一个\Cloud子目录,该子目录就类似Windows7的Libraray的功能,
优点是:1 在任何软件中可以树状浏览\Cloud的结构,
2 正在阅读时,不需要将文件移动就可以进行归类。 根据
=================================
关于tagdata是否需要合并的讨论
=================================
方案1:
如果是1个人使用,一般只有2台电脑,每次从工作地点1到工作地点2时,都记得将tagdata拷贝过去即可。
如果是2个人使用,一般会有3台电脑,就可能存在合并问题。这样在公用计算机上每个人应该有自己的\Tag目录,
不要两个人公用一个tagging.ahk,而应该分别用tagging1.ahk,tagging2.ahk
在EditFileTag时,窗口上显示当前用户ID,如果是自己,则不更改,否则应切换ID,切换后的ID写入AutoHotKey.ahk目录下的ini变量,
下次EditFileTag时会以此为当前用户ID。
如果用户A想检索用户B的数据库,在tagging.ahk中按下Ctrl-Tab,自动切换到\Tag2\tagdata2.lst,同时窗口标题显示 Use tagdata2。
再次Ctrl-Tab切换回\Tag1\tagdata1.lst.
用户A应避免使用用户B的ID添加Tag,应为添加后很可能被用户B从别的电脑复制过来的数据覆盖。
缺点是:EditFileTag是需要辨认用户ID,
搜索时一般不需要按Ctrl-Tab,可能需要按2次Ctrl-Tab,平均为1次。
方案2:合并多个tagdata.lst文件效率低,而且太频繁的合并非常不方便。所以必须采用增量式合并。
1 在办公室具有一个TaggingMain.ahk,其他地点具有TaggingSub.ahk
2 在不同 PC Site 对应一个 Increment_x.lst文件 (x=1,2,3,4)。
a 每次运行 TaggingMain.ahk时,将所有\Tag目录下的Increment_x.lst文件的tag合并到 tagdata.lst中,并将Increment_x.lst文件删除。
同时在tagdata.lst中的[Log]中记录下LastMergeTime1=xxxxxxx;LastMer
评论3
最新资源