xlcwxl 发表于 2010-11-22 21:27:48

[已解决]选择多个文件如何显示文件路径的问题

本帖最后由 xlcwxl 于 2010-11-26 20:32 编辑

FileOpenDialog多选出来的效果:

D:\downloads\2010
DSC00302.JPG
DSC01008.JPG
DSC01039.JPG

有时候选择的文件是快捷方式又会是这样的结果:

C:\Documents and Settings\Administrator\桌面
C:\Program Files\Tencent\QQ\Bin\QQ.exe
test3.au3
test.au3

我想要的效果:

D:\downloads\2010\DSC00302.JPG
D:\downloads\2010DSC01008.JPG
D:\downloads\2010DSC01039.JPG

C:\Documents and Settings\Administrator\桌面\test3.au3
C:\Documents and Settings\Administrator\桌面\test3.au3
C:\Program Files\Tencent\QQ\Bin\QQ.exe\test.au3
谢谢!

ahphsautoit 发表于 2010-11-25 11:45:42

貌似简单的用字符串相连处理一下就可以了啊!
如:$a=c:\windows
      $b=setup.exe
那么:
    $c=$a&'\'&$b

shenrenba 发表于 2010-11-26 09:17:00

方法一#include <File.au3>
$a = 2
$filename = _TempFile(@TempDir, "~test", ".txt", 5)
$file = FileOpenDialog("test", @ScriptDir, "所有文件(*.*)", 7)
Local $temp = ""
If Not @error Then
        $file = StringRegExpReplace($file, "\|", @CRLF)
        FileWrite($filename, $file)
        $fileopen = FileOpen($filename, 0)
        If Not @error Then
                While 1
                        If StringInStr(FileReadLine($fileopen, $a), "\") Then
                                $temp &= FileReadLine($fileopen, $a) & @CRLF
                        Else
                                If FileReadLine($fileopen, $a) <> "" Then
                                        $temp &= FileReadLine($fileopen, 1) & "\" & FileReadLine($fileopen, $a) & @CRLF
                                EndIf
                        EndIf
                        $a += 1
                        If @error = -1 Then ExitLoop
                WEnd
        EndIf
        MsgBox(0, 0, $temp)
        FileClose($fileopen)
        FileDelete($filename)
EndIf
方法2 (暂时没想到控制数组的方法)#include <Array.au3>
Local $temp3
$file=FileOpenDialog("test",@ScriptDir,"所有文件(*.*)",7)
If Not @error Then
        $file=StringRegExpReplace($file,"\|",@CRLF)
        $temp1=StringRegExp($file,"(?m)^([^\v\\]+)\v*$",3)
        $temp2=StringRegExp($file,".*\\.*",3)
        For $i=1 To UBound($temp2)-1
                $temp3[$i-1]=$temp2[$i]
        Next
        For $y=0 To UBound($temp1)-1
                $temp3[$y]=$temp2&"\"&$temp1[$y]
        Next
endif
_ArrayDisplay($temp3)

xlcwxl 发表于 2010-11-26 20:27:14

回复 3# shenrenba

我想到的是第一种方法:
读取行,检测每行是否包含:\(路径符号),若有则直接读取,若没有则在每行之前加上第一行的路径

xlcwxl 发表于 2010-11-26 20:33:17

谢谢!
shenrenba=(神人吧)?

shenrenba 发表于 2010-11-27 08:53:52

回复 5# xlcwxl


    不是原来和朋友玩传奇的时候起的用户名   整个网吧玩的名字都是shenren 开头 方便大家记忆(于网吧名字有关,当时我的就是shenrenba)用习惯了 所以我大部分账号都是shenrenba
页: [1]
查看完整版本: [已解决]选择多个文件如何显示文件路径的问题