zz999 发表于 2012-7-8 23:29:07

请教,一个FTP监控软件生成的文件,如果根据TXT里的内容对文件进行重命名

本帖最后由 zz999 于 2012-7-8 23:32 编辑

每当用户上传一个文件的时候,监控软件,会自动生成一个001_iis_log.txt,后面跟着一个001.ZIP

第二个就是002_iis_log.txt,后面跟着一个002.zip

TXT里的内容是苏特上传:
D:\我的文档\桌面\King.jpg我想实现个功能就是,自动读取该目录下的,所有00*_iis_log.txt的第二行,最后的文件名,然后将ZIP文件,重命名为这个TXT里写的文件名

比如,苏特上传了king.jpg
那么读取了001_iis_log.txt的文件名后,将001.zip重命名为king.jpg

依次类推,直到该目录下的最后一个00*_iis_log.txt

请教高手帮忙,给个核心代码参考!

ashfinal 发表于 2012-7-9 07:59:22

正是au3所擅长的,也应该容易实现。

不过至少自己先思考一下吧,做伸手党对你对大家都没啥好处。{:face (427):}

zz999 发表于 2012-7-9 09:56:30

回复 2# ashfinal


我想写,但是,但是,我不会用循环,天生没语言天赋啊!

shqf 发表于 2012-7-9 10:21:51

循环语句是任何一门编程语言的基本语句吧,先去搞懂吧。否则楼主想解决这个问题有点儿悬,缺得知识太多了!

ooxxgod 发表于 2012-7-9 11:03:12

这个帮助有说明么!

afan 发表于 2012-7-9 11:24:58

#include <File.au3>

Local $sDir = @ScriptDir & '\test\'        ;测试文件夹

Local $aFLs = _FileListToArray($sDir, '*_iis_log.txt', 1)
If @error Then Exit MsgBox(48, '', '未发现 *_iis_log.txt 文件')
Local $iFile = '', $FileName = '', $nTotal = 0, $sInfo = ''
For $i = 1 To $aFLs
        $iFile = StringRegExpReplace($aFLs[$i], '^(\d+).*', '$1')
        $FileName = StringRegExpReplace(FileRead($sDir & $aFLs[$i]), '^.+\n.+?\\([^\\\v]+)(?:\r|$).*', '$1')
        If FileMove($sDir & $iFile & '.zip', $sDir & $FileName) Then
                $nTotal += 1
                $sInfo &= $sDir & $iFile & '.zip ---> ' & $sDir & $FileName & @CRLF
        EndIf
Next
MsgBox(64, '完成 ' & $nTotal & ' 组', $sInfo)

zz999 发表于 2012-7-9 12:06:01

回复 6# afan


    谢谢A大,你这这里的神,先谢谢,晚上下班回家测试。

afan 发表于 2012-7-11 09:58:01

回复 7# zz999


    你所有主题帖(37个)都是提问帖,竟然没有一个标注“已解决”,限今日加注,不然就要扣分扣到解放前了。

zcx880517 发表于 2012-7-11 10:37:51

A版果然很牛,,一觉睡醒登录论坛看看,,谁知积分已经回到解放前了。。
页: [1]
查看完整版本: 请教,一个FTP监控软件生成的文件,如果根据TXT里的内容对文件进行重命名