找回密码
 加入
搜索
查看: 2520|回复: 6

[AU3基础] 複選檔案然後合併求語法(已解决)

  [复制链接]
发表于 2011-4-12 14:19:48 | 显示全部楼层 |阅读模式
本帖最后由 CCM 于 2011-4-13 22:04 编辑

大家好

目前工作上遇到一个情况,就是客户使用outlook express(OE)来发信如果附件超过3MB时,邮件会自动分割(这无法请客户取消),因此收到的邮件会是1/3、2/3、3/3...等等

由于公司用OUTLOOK收信,因此无法用OE还原。所以我是把附件全部存到C:\,然后用DOS命令来合并
copy a.dat + b.dat + n.dat > final.eml 再使用OE开启EML檔

接触了AU3之后,想说能否做个简单的工具,让我可以选取DAT,然后再合并。我自己想到的作法如下,不过ELSE之后我就不知道该怎么写了,请各位有经验的前辈指导一下。

唯一想到的是复选文件,是否该用数组?
$A="请选取要合并的档案,可用Ctrl或Shift复选"
$var = FileOpenDialog($A, @WorkingDir & "", "DAT(*.*)", 1 + 4 )
If @error Then
    MsgBox(0,"DAT to EML Tool","无选取档案")
Else


EndIf
发表于 2011-4-12 15:35:38 | 显示全部楼层
本帖最后由 afan 于 2011-4-13 17:06 编辑
Local $Files = FileOpenDialog('请选取要合并的档案,可用Ctrl或Shift复选', @WorkingDir & '', 'DAT(*.*)', 1 + 4)
If @error Then Exit (MsgBox(0, 'DAT to EML Tool', '无选取档案,退出'))
If Not StringInStr($Files, '|') Then Exit (MsgBox(0, 'DAT to EML Tool', '单个文件无合并意义,退出'))
Local $sR = StringRegExp($Files, '[^\|]+', 3)
If @error Or UBound($sR) < 2 Then Exit -1
Local $FileDir = $sR[0] & '\'
Local $cmdstr = @ComSpec & ' /c Copy "'
For $i = 1 To UBound($sR) - 1
        $cmdstr &= $FileDir & $sR[$i] & '" + "'
Next
$cmdstr = StringTrimRight($cmdstr, 3) & ' final.eml'
RunWait($cmdstr, '', 0)
发表于 2011-4-12 16:30:08 | 显示全部楼层
如果分卷太多,其实可以设计成只选择第一个,程序根据命名规则自动寻找后面所有的分卷再合并到第一个。
 楼主| 发表于 2011-4-13 16:32:35 | 显示全部楼层
谢谢AFAN,刚刚测试了一下,选取后合并出来的EML档,无法用OE开启,用笔记本开启后,内容是刚刚选取的文件名称,所以程序没有做copy a+b+c的动作,请问AFAN能否再帮忙想想。

个人想了下
是否使用数组,但这会不会因为选取档案的顺序影响合并内容,因为关系到变量部分个人不是很上手,所以请大家提供方法,我再调整作法,谢谢。
 楼主| 发表于 2011-4-13 17:00:48 | 显示全部楼层
我搜索并修改下列程序,虽然能读取文件名,不过档案合并那边没作用,麻烦请帮忙修正一下,谢谢。
#include <Array.au3>
dim $search = FileFindFirstFile("*.dat")
If $search = -1 Then
    MsgBox(0, "錯誤!", "沒有DAT檔,請確認檔案存放位置!")
    Exit
EndIf

While 1
    $file = FileFindNextFile($search)
    If @error Then ExitLoop
         run(@comspec & "/c" & "copy" & $file & "+" & " > Final.eml")
        msgbox(0,"",$file)
WEnd
FileClose($search)
发表于 2011-4-13 17:00:53 | 显示全部楼层
本帖最后由 afan 于 2011-4-13 17:07 编辑

回复 4# CCM


    那个合并完全是用的你的“copy a.dat + b.dat + n.dat > final.eml ”我只是将其中的文件换成了选择的文件。 按说 final.eml 应该也只是个合并文件的记录。如果没有“>”,final.eml 才是最终的合并文件。
2#的代码我修改了下,去掉了那个“>”,你再试试~
 楼主| 发表于 2011-4-13 17:09:36 | 显示全部楼层
很抱歉,去掉  ">" 就行了,谢谢AFAN的帮忙。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-2 08:42 , Processed in 0.118086 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表