CCM 发表于 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

afan 发表于 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 & '\'
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)

afan 发表于 2011-4-12 16:30:08

如果分卷太多,其实可以设计成只选择第一个,程序根据命名规则自动寻找后面所有的分卷再合并到第一个。

CCM 发表于 2011-4-13 16:32:35

谢谢AFAN,刚刚测试了一下,选取后合并出来的EML档,无法用OE开启,用笔记本开启后,内容是刚刚选取的文件名称,所以程序没有做copy a+b+c的动作,请问AFAN能否再帮忙想想。

个人想了下
是否使用数组,但这会不会因为选取档案的顺序影响合并内容,因为关系到变量部分个人不是很上手,所以请大家提供方法,我再调整作法,谢谢。

CCM 发表于 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)

afan 发表于 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#的代码我修改了下,去掉了那个“>”,你再试试~

CCM 发表于 2011-4-13 17:09:36

很抱歉,去掉">" 就行了,谢谢AFAN的帮忙。
页: [1]
查看完整版本: 複選檔案然後合併求語法(已解决)