本帖最后由 sanmoking 于 2012-11-11 13:58 编辑
回复 1# xx44t10
首先把你的test.txt文件转换成ini格式的,如下:[data]
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\Hash.au3=hash值:0x9FE062B199B67CBF8C5933DA1EF5EF382DB460DC
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\全盘文件存档.au3=hash值:0x46527348A86B0BBE796098DB8BBC3489338B235E
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\存当前文件全路径.au3=hash值:0xD8689EDBE7499F1E7EA03C540D2EDCB8B5848852
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\排序.au3=hash值:0x579F2E1278B1B1846FC0E4058931F3E71F16E288
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\排序2.au3=hash值:0x9C856E87D7A3A55C92FC3103800B0F530B99537C
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\新.au3=hash值:0xEF9640D8C983766C29C50B6CD9A7CCC5D8C2C83F
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\新建 AutoIt v3 脚本 (2).au3=hash值:0x3651F6DFF6B3C4C1CCA25A9B6329CDA7BA486226
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\新建 AutoIt v3 脚本.au3=hash值:0x07AF5863828AC2D4CD8B2C1CA26BDDC949AAA364
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\新建 AutoIt v3.au3=hash值:0x403201B512DBF522F7495DD0CAC4274CCB8D6381
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\新建文件夹\h.ash=hash值:0x0CC5B69A46EB77B80088B7FBEA1E8D1EF5192A6A
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\新建文件夹\test.txt=hash值:0x9EE99B7399200BDD5A67A63348F53671CC7392C6
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\新建文件夹\存当前文件全路径.au3=hash值:0xD8689EDBE7499F1E7EA03C540D2EDCB8B5848852
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\新建文件夹\读h.ash写hash值到test文件.au3=hash值:0xF5808977E69CC0419F2AA7A2AE95E330EC03A5A4
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\新建文件夹=hash值:-1
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\新建文件夹 (2)\PC1.txt=hash值:0xA1C93CB0A0FA91369606382D2E7905A8292EFE93
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\新建文件夹 (2)\PC1_duplicatioin.xls=hash值:0xE6E2BC9467D985B958BA2C63DC5C5CE52A4F1D15
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\新建文件夹 (2)\新建 AutoIt v3 脚本.au3=hash值:0x4A8E377EDF35006E8019FC4C59206CD0076133F0
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\新建文件夹 (2)=hash值:-1
文件:C:\Documents and Settings\Administrator\桌面\新建文件夹\读h.ash写hash值到test文件.au3=hash值:0xF5808977E69CC0419F2AA7A2AE95E330EC03A5A4
也就是在文本最前面加了个[data]的字段名,然后把“ hash值:”(前面有个空格)转换成“=hash值:”,这样就是一个标准的ini文件了。
然后用IniReadSection读取[data]字段,然后再用_ArraySort来排序数组。
具体代码如下:
#include <Array.au3>
$fini = @ScriptDir & "\test.ini"
$ini = IniReadSection($fini,"data")
_ArraySort($ini, 0, 0, 0, 1)
For $i = 1 To $ini[0][0]
;~ IniDelete($fini,"data",$ini[$i][0])
IniWrite($fini,"data-"&@YEAR&@MON&@HOUR&@MIN&@SEC,$ini[$i][0],$ini[$i][1])
Next
ShellExecute($fini)
如果你的数据太多,IniReadSection由于遗留原因, 仅读取 32767 个字符,那你可以用论坛的udf<_Ini.au3>里面的函数来读取。
另外上述方法有个问题,就是如果你的文件路径里面有“=”存在,那么ini文件读取的时候就有点小问题,
注意:
对于特殊的键与值,如“abc=123=AAA” 原则上“abc”应该才为关键字,“123=AAA”为值,
本想规范之,但觉得有时候可能会有“abc=123”为关键字,“AAA”为值的需求(内置函数是没得选的),
因此,这里不强制为第一种情况,只需注意如下几点(当然,只有1个等号就无需注意这些了):
1,_IniReadSection 这个将保持为仅适用第一种情况,“abc”为关键字,“123=AAA”为值
2,_IniDelete、_IniRead、_IniRenameKey、_IniWrite 可同时适用两种情况。
上面是udf<_Ini.au3>的作者的说明,所以不知道你的test.txt文件是怎么获得的,
如果可能的话,你转换成ini的时候可以把hash值放在前面当做关键字,路径放后面当作值。
这样就不存在多个=号的问题了,当然用_ArraySort排序的时候最后一个参数(二维数组中用于排序的子索引)就要改成0。 |