关于数字文件名的文件排序
例如我的文件名是1-1.txt
1-2.txt
.
.
.
1-10.txt
1-11.txt
.
.
1-100.txt
1-101.txt
用FileFindFirstFile遍历读取,
或用_FileListToArray获取的文件名,
排序不符合要求:
1-1.txt
1-10.txt
1-101.txt
.
.
1-109.txt
1-11.txt
.
.
现在暂时的解决办法不适合大批量应用,如下:Local $all1,$all2,$i=1,$ii=1
While 1
$txt1=FileRead("1-"&$i&".txt")
If @error Then ExitLoop
$all1&=$txt1&@CRLF
$i+=1
WEnd
While 1
$txt2=FileRead("2-"&$ii&".txt")
If @error Then ExitLoop
$all2&=$txt2&@CRLF
$ii+=1
WEnd
MsgBox(0,0,$all1&$all2)请问有没有办法读取到的文件名是按照如下排序的?1-1.txt
1-2.txt
.
.
.
1-10.txt
1-11.txt
.
.
1-100.txt
1-101.txt 这样不行吗?Dim $hfile, $i
Dim $text, $str
For $i = 1 To 2000
$hfile = FileOpen(@ScriptDir & "\1-" & $i & ".txt", 8 + 1)
FileWrite($hfile, $i)
FileClose($hfile)
Next
$i = 1
While 1
$hfile = FileOpen(@ScriptDir & "\1-" & $i & ".txt")
$text = FileRead($hfile)
If @error Then ExitLoop
FileClose($hfile)
$str &= $text & @CRLF
$i += 1
WEnd
MsgBox(0, 0, $str) 本帖最后由 ila 于 2016-1-12 11:37 编辑
回复 2# haijie1223
文件名虽然按照数字顺序,但有变化,例如:1-1.txt或1-02.txt
百度,发现dos很强大,Copy *.txt book.txt这样完全符合我的要求。
但是,想要用autoit来实现,
不知道能否用正则来排序。 没有明白你要做什么? 本帖最后由 ila 于 2016-1-12 13:49 编辑
没有明白你要做什么?
haijie1223 发表于 2016-1-12 13:00 http://www.autoitx.com/images/common/back.gif
把上述名称的文件,按照要求的排序读取,合并成一个文件。
最近看小说,很多chm格式文件反编译后都是几十几百个txt文件,想要按照章节顺序合并起来。
用FileFindFirstFile遍历读取,
或用_FileListToArray获取的不符合目标排序。
而dos命令直接把这;两步做完了。
希望可以用au3做到上述要求。 回复 5# ila
按你说的,估计copy命令也不会得到正确的顺序。 回复ila
按你说的,估计copy命令也不会得到正确的顺序。
haijie1223 发表于 2016-1-12 15:02 http://www.autoitx.com/images/common/back.gif
排序正确,我再试试其它的
回复 6# haijie1223
copy命令是按文件名排序,au3是按先后 回复 8# fuldho
楼主说文件名可能是 1-1 1-2...1-0011-002
我先建立了1-1,1-2,...,1-2000,然后建立1-001。结果COPY命令把1-001放在最后了,AU3也放在最后。 回复 8# fuldho
有关排序问题,早就提问过。
http://www.autoitx.com/thread-47067-1-1.html 先将文件名中的数字统一在其左边补0到一指定的最大位数,(比如5位:1-10.txt 补0后 00001-00010.txt)
再用 _ArraySort() 排序 回复 11# afan
Good idea 先将文件名中的数字统一在其左边补0到一指定的最大位数,(比如5位:1-10.txt 补0后 00001-00010.txt)
再 ...
afan 发表于 2016-1-13 10:12 http://www.autoitx.com/images/common/back.gif
嘿,好办法,
从其它角度来看。
我试试。 有这么复杂么,如果你这些文件都在同一个目录下,用_FileListToArray获取所有文件名到数组,不在同一个目录下用你目前的方法获取所有文件到数组。数组获取完毕后,自己根据需求写一套排序规则不就行了? 回复 14# skyfree
获取到的文件名不同,有1-1.txt,也有1-01.txt等等。
最后找网友写了个批处理,搞定了。
页:
[1]