字符路径已经写入数组,但当用FileExists检查是否存在时,却报错??
本帖最后由 天堂泪吻泪 于 2010-2-5 00:40 编辑想写个返回空盘符的UDF,代码如下,如果把IF的那两行注释后就可以正常运行,但正常运行后,却发现多了一个?????
试过用两层FOR都不行,请大家帮下忙吧!:face (30):
见二楼和四楼都有例子!!!!#include <array.au3>
_GetDriverEmptyLetter()
Func _GetDriverEmptyLetter()
Local $AllLetter
Local $i
$AllLetter = 0
For $i = 1 To 26
If Not FileExists(Chr(96 + $i) & ":\") Then
$AllLetter[$i] = Chr(96 + $i) & ":\"
$AllLetter += 1
ReDim $AllLetter
EndIf
Next
_ArrayDisplay($AllLetter)
EndFunc ;==>_GetDriverEmptyLetter #include <array.au3>
_GetDriverEmptyLetter()
Func _GetDriverEmptyLetter()
Local $AllLetter
Local $i, $n = 1
$AllLetter = 0
For $i = 1 To 26
If Not FileExists(Chr(96 + $i) & ":\") Then
$n += 1
ReDim $AllLetter[$n]
$AllLetter[$n - 1] = Chr(96 + $i) & ":\"
EndIf
Next
$AllLetter = $n-1
_ArrayDisplay($AllLetter)
EndFunc ;==>_GetDriverEmptyLetter按你的代码改的,似乎光驱没被正确辨别。 回复 2# 顽固不化
先谢谢了!:face (35):
帮助里是这样写的,
注意/说明
如果指定路径参数为未插入磁盘的软驱则 FileExists 的返回值为0.
原来不止是软驱,光驱也是一样!在下再去改一改!
尝试用DeviceGetDevice("ALL")做二次循环看行不行?? 回复 3# 天堂泪吻泪
这样行不?#include <array.au3>
$a = _GetDriverEmptyLetter()
_ArrayDisplay($a)
Func _GetDriverEmptyLetter()
Local $tmp, $i
For $i = 99 To 121
$tmp &= Chr($i) & ':|'
Next
$tmp &= 'z:'
Local $Drive = DriveGetDrive('all')
For $i = 1 To $Drive
$tmp = StringRegExpReplace($tmp, $Drive[$i] & '\|', '')
Next
Return StringSplit($tmp, '|')
EndFunc ;==>_GetDriverEmptyLetter 本帖最后由 天堂泪吻泪 于 2010-2-5 00:50 编辑
回复 4# afan
正则,晕!!!像http://www.autoitx.com/thread-12844-1-1.html做二层嵌套不可以实现吗??
因为我正在发贴子,所以还没看到你的回复就发了!!!!这样也行!!!!:face (35):
这的原理就是先用CHR把数字转成字母,用循环把"a:|"到"y:|"分别负值到$tmp变量中,最后才把"z:"负值到$tmp是因为这样做的话,就不会多一个"|"方便用"|"来分数组,StringSplit是个不错的涵数!正则那里还得慢慢研究!!!!
页:
[1]