回复 10# afan
版大,帮我检测下我的这个是哪里不对好吗?看了好久没发现错在哪里,完全是照你搬的代码,不会应用。谢谢!;例子:
#include <Array.au3>
Local $a[4] =['C:\Users\Administrator\Desktop\王牌浏览器.lnk', 'C:\Users\Administrator\Desktop\网址导航.lnk', 'C:\Users\Administrator\Desktop\影视大全.lnk', 'C:\Users\Administrator\Desktop\电脑管家.lnk']
Local $rt = _FilesExists($a) ;检查数组例子
MsgBox(0, @Error, '全部存在返回1,否则返回0' & @LF & $rt)
$rt = _FilesExists('C:\Users\Administrator\Desktop\王牌浏览器.lnk|C:\Users\Administrator\Desktop\网址导航.lnk|C:\Users\Administrator\Desktop\影视大全.lnk|C:\Users\Administrator\Desktop\电脑管家.lnk')
MsgBox(0, @Error, '全部存在返回1,否则返回0' & @LF & $rt)
$rt = _FilesExists('C:\Users\Administrator\Desktop\王牌浏览器.lnk|C:\Users\Administrator\Desktop\网址导航.lnk|C:\Users\Administrator\Desktop\影视大全.lnk|C:\Users\Administrator\Desktop\电脑管家.lnk', 1) ;返回不存在的文件数组例子
_ArrayDisplay($rt, '不存在的文件')
Func _FilesExists($Files, $Flag =0, $aF =0)
;Afan 提示:检查多个文件是否存在
;$Files - 需检查的文件,可以是字符串或1维数组:
; 为字符串时,多个文件用“|”分隔
; 为数组时,每个元素为一个文件,同时第三个参数$aF可用
;$aF - 为数组时,检查的起始元素,默认为0
;$Flag - 需返回的结果标志。
;返回值:
; 正确 - 根据$Flag的值返回结果:
; $Flag=0(默认) 全部存在返回1,否则返回0
; $Flag=1 全部存在返回1,否则返回不存在的文件数组
; 错误 - 设置@Error非零
;~ Local $aTmp = $Files, $Start = 0
If IsArray($Files) Then ;文件数组
If UBound($Files, 0) > 1 Then Return SetError(1)
If UBound($Files) < $aF Then Return SetError(2)
$Start = $aF
Else ;文件字符串
$aTmp = StringRegExp($Files, '([^|\s][^|]+[^|\s])', 3)
If @error Then Return SetError(3)
EndIf
If $Flag Then
Local $sTmp = ''
For $i = $Start To UBound($aTmp) - 1
If Not FileExists($aTmp[$i]) Then $sTmp &= $aTmp[$i] & '|'
Next
If $sTmp = '' Then Return 1
Local $aSR = StringRegExp($sTmp, '[^|]+', 3)
Return $aSR ;返回不存在的文件数组
EndIf
For $i = $Start To UBound($aTmp) - 1
If Not FileExists($aTmp[$i]) Then Return 0
Next
Return 1
EndFunc ;==>_FilesExists
|