1、界面概述
         PNCompare界面如下图1所示主要分成Title, Menu, Button, Compare, Result和Status这几个区域。Title区域用来显示当前查看的文件全路径。Menu区域有File, Directory, Compare, Tool和Help菜单,File菜单用来选择用于比较的两个目录结构的根目录节点,打开PNTree, PNDiff和PNEdit以及界面退出,Directory菜单可以对打开的目录结构做Delete, Hold, Paste, Move, New, Rename, Compress和Copy Full Path操作,Compare菜单用来设置/清除/比较/替换/跳转等操作,Tool菜单用来打开查看系统信息(System Information)、文件加解密(Encrypt/Decrypt)、文件分解和合并(Split/Join)以及文件列表打印(Directory Print)这几个小工具,Help菜单用来打开用户手册、查看版本信息。Button区域有File, Compare, Review, Tool和Help按钮,其功能和菜单栏中对应的类似。Compare区域显示当前两个目录比较的目录结构。Result区域显示当前两个目录比较的结果列表。Status区域主要显示当前目录结构中查看的文件状态信息。
图1 PNCompare窗口各区域
         在PNCompare界面菜单栏中Compare项下拉菜单如下图2所示,有Setting, Clear, Start, L2R All, R2L All, Goto Select, L2R Select和R2L Select这几项。Setting项点开会打开目录比较的设置界面;Clear项点击会将当前目录比较结果清除掉; Start项点击会根据设置的比较条件开始做目录比较;L2R All项点击会将左边目录结构中比较不一致的节点全部替换成右边目录结构中的节点;R2L All项点击会将右边目录结构中比较不一致的节点全部替换成左边目录结构中的节点;Goto Select项点击会根据比较结果列表中选择的项跳转到对应的文件在目录树上的节点;L2R Select项点击会将在结果列表中选择的项左边目录结构中比较不一致的节点替换成右边目录结构中的节点;R2L Select项点击会将在结果列表中选择的项右边目录结构中比较不一致的节点替换成左边目录结构中的节点。
图2 PNCompare比较控制菜单
         在PNCompare界面按钮中Compare和Review项如下图3所示,按钮点击打开目录比较设置界面;按钮点击将当前比较结果从结果列表中清除掉;按钮点击根据设置的比较条件直接开始比较;按钮点击将左边目录结构中比较不一致的节点全部替换成右边目录结构中的节点;按钮点击项点击将右边目录结构中比较不一致的节点全部替换成左边目录结构中的节点;按钮点击会跳转至当前不同项的前一个不同项上;按钮点击会跳转至当前不同项的后一个不同项上;输入框 用于输入和显示当前查看的比较结果项;按钮点击跳转至输入的项所在的目录树节点上并将其高亮;按钮点击将输入的项所对应的左边目录结构中比较不一致的节点替换成右边目录结构中的节点;按钮点击将输入的项所对应的右边目录结构中比较不一致的节点替换成左边目录结构中的节点。
图3 PNCompare比较控制按钮
         在PNCompare界面结果区域中鼠标右键会弹出菜单如下图4所示,有Goto Select, L2R Select, R2L Select, Full Path和Remove Full Path这几项。Goto Select项点击会根据比较结果列表中选择的项跳转其所在的目录树节点上并将其高亮;L2R Select项点击会将结果列表中选择的项所对应的左边目录结构中比较不一致的节点替换成右边目录结构中的节点;R2L Select项点击会将结果列表中选择的项所对应的右边目录结构中比较不一致的节点替换成左边目录结构中的节点;Full Path项点击会将结果列表中的Left Directory和Right Directory列文件名显示全路径;Remove Full Path项点击会将结果列表中的Left Directory和Right Directory列文件名仅显示文件名。
图4 PNCompare比较结果查看菜单
2、多模式可配置的目录比较
         对于目录结构的比较有多种配置的方式如下图5所示,其中”Home Select”区域用于选择比较的两个目录结构根节点,按钮点击选择左边的根目录节点,选择确认后会将该根目录节点的全路径显示在输入框中,也可以在该输入框中直接输入左边的根目录节点全路径;按钮点击选择右边的根目录节点,选择确认后会将该根目录节点的全路径显示在输入框中,也可以在该输入框中直接输入右边的根目录节点全路径。”Scope Select”区域用于设置目录比较的层次范围。”Compare Condition”区域用于设置目录比较的文件和文件夹类型,目录创建者,目录访问权限,目录创建时间,目录的存储大小以及文件的内容。
图5 PNCompare目录比较设置窗口
2.1、目录层次设置
         在”Scope Select”区域中对于比较的目录结构的层次范围选择有”Level All”, ”Level 1”, ”Level 1-?”和”Level ?”这四个单选项。
         Scope Level All 模式,如下图6所示设置了”Level All”层次比较模式,在该例子中设置了对”/home/test/test_case/script/compare_test/case0/left_test”和”/home/test/test_case/script/compare_test/case0/right_test”这两个目录结构做”Level All”即当前根目录节点下全部层次的目录节点都做比较,共找到有17个两边目录结构有不一致的节点。
图6 PNCompare目录比较层次设置示例1
         Scope Level 1 模式,如下图7所示设置了”Level 1”层次比较模式,在该例子中设置了对”/home/test/test_case/script/compare_test/case0/left_test”和”/home/test/test_case/script/compare_test/case0/right_test”这两个目录结构做”Level 1”即当前根目录节点下第1层的目录做比较,共找到有11个两边目录结构有不一致的节点。这里目录层次选择的是”Level 1”,同一个目录下仅在当前根目录下第1层做比较,对于根目录节点第2层之后所有的节点不再做比较。
图7 PNCompare目录比较层次设置示例2
         Scope Level 1-? 模式,如下图8所示设置了”Level 1-?”层次比较模式,在该例子中设置了对”/home/test/test_case/script/compare_test/case0/left_test”和”/home/test/test_case/script/compare_test/case0/right_test”这两个目录结构做”Level 1-2”即当前根目录节点下第1-2层的目录做比较,共找到有15个两边目录结构有不一致的节点。这里目录层次选择的是”Level 1-?”,同一个目录下仅在当前根目录下第1-2层做比较,对于根目录节点第3层之后所有的节点不再做比较。
图8 PNCompare目录比较层次设置示例3
         Scope Level ? 模式,如下图9所示设置了”Level ?”层次比较模式,在该例子中设置了对”/home/test/test_case/script/compare_test/case0/left_test”和”/home/test/test_case/script/compare_test/case0/right_test”这两个目录结构做”Level 4”即当前根目录节点下第4层的目录做比较,共找到有4个两边目录结构有不一致的节点。这里目录层次选择的是”Level ?”,同一个目录下仅在当前根目录下第4层做比较,对于根目录节点第1-3层以及第5层之后所有的节点不再做比较。
图9 PNCompare目录比较层次设置示例4
2.2、比较条件属性设置
         在”Compare Condition”区域中用于设置目录名比较的有”File Folder”, ”File Only”和”Folder Only”这三种模式,其中”File Folder”用于比较选择的目录结构下的文件和文件夹名,”File Only”用于比较选择的目录结构下的文件名,”File Folder”用于比较选择的目录结构下的文件夹名。在文件或文件夹名比较相同的情况下还可以对其属性做比较,这里设置有”Owner”, ”Access”, ”Time”, ”Size” 和”Content”这五个属性勾选项。
         文件创建者比较,如下图10所示勾选了”Owner”做文件创建者比较的例子,在该例子中设置了对”/home/test/test_case/script/compare_test/case0/left_test”和”/home/test/test_case/script/compare_test/case0/right_test”这两个目录结构在目录层次设置了”Level All”,比较条件属性设置了”Owner”,比较之后共找到有18个两边目录结构有不一致的节点。这里勾选了文件创建者的比较,因此在同一个目录下比较多出一个1个文件名相同但文件创建者不同的文件”owner.tcl”。
图10 PNCompare目录比较文件属性设置示例1
         文件访问权限比较,如下图11所示勾选了”Access”做文件访问权限比较的例子,在该例子中设置了对”/home/test/test_case/script/compare_test/case0/left_test”和”/home/test/test_case/script/compare_test/case0/right_test”这两个目录结构在目录层次设置了”Level All”,比较条件属性设置了”Access”,比较之后共找到有18个两边目录结构有不一致的节点。这里勾选了文件访问权限的比较,因此在同一个目录下比较多出一个1个文件名相同但文件访问权限不同的文件”access.tcl”。
图11 PNCompare目录比较文件属性设置示例2
         文件时间比较,如下图12所示勾选了”Time”做文件时间比较的例子,在该例子中设置了对”/home/test/test_case/script/compare_test/case0/left_test”和”/home/test/test_case/script/compare_test/case0/right_test”这两个目录结构在目录层次设置了”Level All”,比较条件属性设置了”Time”,比较之后共找到有18个两边目录结构有不一致的节点。这里勾选了文件时间的比较,因此在同一个目录下比较多出一个1个文件名相同但文件时间不同的文件”time.tcl”。
图12 PNCompare目录比较文件属性设置示例3
         文件存储大小比较,如下图13所示勾选了”Size”做文件存储大小比较的例子,在该例子中设置了对”/home/test/test_case/script/compare_test/case0/left_test”和”/home/test/test_case/script/compare_test/case0/right_test”这两个目录结构在目录层次设置了”Level All”,比较条件属性设置了”Size”,比较之后共找到有18个两边目录结构有不一致的节点。这里勾选了文件存储大小的比较,因此在同一个目录下比较多出一个1个文件名相同但文件存储大小不同的文件”size.tcl”。
图13 PNCompare目录比较文件属性设置示例4
         文件内容比较,如下图14所示勾选了”Content”做文件内容比较的例子,在该例子中设置了对”/home/test/test_case/script/compare_test/case0/left_test”和”/home/test/test_case/script/compare_test/case0/right_test”这两个目录结构在目录层次设置了”Level All”,比较条件属性设置了”Content”,比较之后共找到有19个两边目录结构有不一致的节点。这里勾选了文件内容的比较,因此在同一个目录下比较多出一个2个文件名相同但文件内容不同的文件”size.tcl”和”content.tcl”。
图14 PNCompare目录比较文件属性设置示例5
3、目录比较结果的查看
         PNCompare在比较完成之后会将其结果高亮比较的两个目录结构中不同的目录节点并在比较结果列表中显示这些不同项如下图15所示,在该结果列表的上方对应有”Number”, “Type”, “Left Directory”和”Right Directory”这四个列项。其中”Number”这一列用于显示当前比较不同项的编号;”Type”这一列用于显示当前比较不同项的类型(共有7种类型,Left类型表示当前目录节点在左边目录结构中存在右边目录结构中不存在,Right类型表示当前目录节点在右边目录结构中存在左边目录结构中不存在,Owner类型表示当前目录节点在左边和右边目录结构中目录名相同但文件创建者不同,Access类型表示当前目录节点在左边和右边目录结构中目录名相同但文件访问权限不同,Time类型表示当前目录节点在左边和右边目录结构中目录名相同但文件时间不同,Size类型表示当前目录节点在左边和右边目录结构中目录名相同但文件存储大小不同,Content类型表示当前目录节点在左边和右边目录结构中目录名相同但文件内容不同);”Left Directory”这一列用于显示当前比较不同项左边目录结构中对应的节点目录名(目录名显示有单独目录名或目录的全路径名,这可以通过图4比较结果查看菜单中的”Full Path”和”Remove Full Path”项控制);”Right Directory”这一列用于显示当前比较不同项右边目录结构中对应的节点目录名。在该列表左下方可以用”Filter (Type)”按钮下拉列表过滤结果列表中选择显示的7种结果类型,按钮用于根据选择的结果类型开始过滤显示,按钮用于清空过滤的结果重新显示全部的结果。在该列表右下方会显示当前比较结果的数量,结果在列表中是按页显示的,每页最多100个比较结果项,在查看时可以在”Page”中先找到对应的页号即可在结果列表中显示该页的项,按钮用于向前翻一页显示前页的结果,按钮用于向后翻一页显示后页的结果。
图15 PNCompare目录比较结果查看
         比较结果跳转,对于比较结果查看其详细目录结构时可以在结果列表中双击该项即可将该项所在的目录节点在“Compare”区域中两边的目录结构树中高亮。同时“Goto”操作还可以通过图2比较控制菜单中的“Goto Select”项,图3中比较控制按钮中的跳至前一个按钮, 跳至后一个按钮, 跳至输入项按钮和图4比较结果查看菜单中的“Goto Select”项这几个方式来实现结果跳转的功能。这里“Goto”操作一次仅可以选择一个结果项做跳转。
4、目录比较结果的合并
         PNCompare在比较完成之后会对比较有不一致的目录节点可以做合并的操作,其中有“L2R All”, “R2L All”, “L2R Select”和“R2L Select”这四种合并操作。“L2R All”和“R2L All”合并操作可以通过图2比较控制菜单中的“L2R All”和“R2L All”项,图3中比较控制按钮中的“L2R All”按钮和“R2L All”按钮以及图5目录比较设置窗口中的“L2R”和“R2L”按钮。“L2R Select”和“R2L Select”合并操作可以通过图2比较控制菜单中的“L2R Select”和“R2L Select”项,图3中比较控制按钮中的“L2R Select”按钮和“R2L Select”按钮以及图4比较结果查看菜单中的“L2R Select”和“R2L Select”项。由于合并的操作是修改合并对象的目录结构且不可恢复,因此在点击合并按钮之后会先弹出一个”Question [irrve]”窗口,需要用户确认是否做合并操作,在确认之后才会根据设置做相应的合并。
         L2R All合并操作,如下图16所示在合并模式中选择了”L2R All”合并操作,即对所有比较结果不同的项(共17项)都做”L2R”合并操作,将左边目录结构中比较不一致的目录节点替换成右边目录结构中的节点(即将右边目录中有的但左边目录中没有的目录节点从右边目录复制到左边目录,左边目录中有的但右边目录中没有的目录节点从左边目录中删除)。下图17所示是该合并操作之后的结果,可以看到合并之后左边目录结构中内容已经按照”L2R”合并规则做了全部替换,替换之后左边目录中的所有目录节点已经和右边目录中一致了,因此合并之后的比较不同项为0。
图16 PNCompare比较结果L2R All合并操作
图17 PNCompare比较结果L2R All合并结果
         R2L All合并操作,如下图18所示在合并模式中选择了”R2L All”合并操作,即对所有比较结果不同的项(共17项)都做”R2L”合并操作,将右边目录结构中比较不一致的目录节点替换成左边目录结构中的节点(即将左边目录中有的但右边目录中没有的目录节点从左边目录复制到右边目录,右边目录中有的但左边目录中没有的目录节点从右边目录中删除)。下图19所示是该合并操作之后的结果,可以看到合并之后右边目录结构中内容已经按照”R2L”合并规则做了全部替换,替换之后右边目录中的所有目录节点已经和左边目录中一致了,因此合并之后的比较不同项为0。
图18 PNCompare比较结果R2L All合并操作
图19 PNCompare比较结果R2L All合并结果
         L2R Select合并操作,如下图20所示在合并模式中选择了”L2R Select”合并操作,即对在结果列表中选中的4个比较结果不同的项(共17项)做”L2R”合并操作,将左边目录结构中比较不一致的目录节点替换成右边目录结构中的节点(即将右边目录中有的但左边目录中没有的目录节点从右边目录复制到左边目录,左边目录中有的但右边目录中没有的目录节点从左边目录中删除)。下图21所示是该合并操作之后的结果,可以看到合并之后左边目录结构中选择的4个比较结果项已经按照”L2R”合并规则做了替换,替换之后左边目录中这四个选择项对应的目录节点已经和右边目录中一致了,因此合并之后的比较不同项为13。
图20 PNCompare比较结果L2R Select合并操作
图21 PNCompare比较结果L2R Select合并结果
         R2L Select合并操作,如下图22所示在合并模式中选择了”R2L Select”合并操作,即对在结果列表中选中的3个比较结果不同的项(共17项)做”R2L”合并操作,将右边目录结构中比较不一致的目录节点替换成左边目录结构中的节点(即将左边目录中有的但右边目录中没有的目录节点从左边目录复制到右边目录,右边目录中有的但左边目录中没有的目录节点从右边目录中删除)。下图23所示是该合并操作之后的结果,可以看到合并之后右边目录结构中选择的3个比较结果项已经按照”R2L”合并规则做了替换,替换之后右边目录中这三个选择项对应的目录节点已经和左边目录中一致了,因此合并之后的比较不同项为14。
图22 PNCompare比较结果R2L Select合并操作
图23 PNCompare比较结果R2L Select合并结果