supersp 发表于 2010-1-12 12:52:26

非数组变量错误问题

本帖最后由 supersp 于 2010-1-12 15:08 编辑

一位同事有大量PDF跟JPG文件,要按创建日期的顺序打印,而FileFindFirstFile() 好像不支持多个关键字,并且搜索顺序未知,因此调用CMD,写了下面的代码

在XP下正常运行,但2000下却提示子操作使用了非数组变量。

因为无法在同事的2000系统下调试,只能本机检查代码,发现可能是 StringRegExp() 返回的数组参数问题,问题代码如下。

有没有一种方法,得到按日期排序后的文件组,并且PDF跟JPG是夹杂的。


代码如下:
#include <String.au3>
#include <Constants.au3>

;按日期排序文件并读入数组
Local $foo = Run(@ComSpec & ' /c dir /-c /o:d /t:c| findstr ".jpg .jpeg .pdf 个文件"', $dir, @SW_HIDE, $STDOUT_CHILD)
Global $cow
While 1
        $line = StdoutRead($foo) ;读取CMD STDOUT
        If @error Then ExitLoop
        If $line <> "" Then
                $cow = StringSplit($line, @CRLF, 1) ;按行分解到数组
        EndIf
WEnd


;提取文件名,文件大小
Global $size
Global $sarry = StringRegExp($cow[$cow - 1], '\h+\d+\h\S+\h+(\d+)\h\S+', 1, 1) ;正则提取所有文件总大小
Global $zsize = Number($sarry)
For $i = 1 To $cow - 2 Step 1
        $sarry = StringRegExp($cow[$i], '.{1,}\h{1,}(\d{1,})\h{1,}\S{1,}', 1, 1) ;正则提取文件大小
        $size += Number($sarry)
        $sarry = StringRegExp($cow[$i], '\h+\d+\h+(\S+)', 1, 1) ;正则提取文件名
        $file = $sarry
        _printpdf($file, $i)
Next

afan 发表于 2010-1-12 14:45:41

标题模糊|违规,不利于论坛搜索,此主题已暂时关闭。请依照论坛发帖规则修改标题。并于修改合格之后,联系本版版主或管理员打开(务必附上被关闭的帖子链接)。若3日后仍未修改,将移入论坛回收站。若放弃对此主题的修改而重新开贴,将删除新帖并从重处罚。

附:论坛发帖规则 http://www.autoitx.com/forum.php?mod=viewthread&tid=10945
页: [1]
查看完整版本: 非数组变量错误问题