Volgens mij zoektt FSO nu steeds de extentie op terwijl je deze al hebt in je file object...
code:
1
| if Strcomp(a,b,1)=-1 then |
Hier kijk je of a en b al dan niet hetzelfde zijn, dit geeft geen volgorde aan vwb alfabet of numeriek

in de originele sorteer functie heb ik de set niet gebruikt....daarom verandert hij het object in een string.....nu werkt het allemaal en kun je FSO sorteren op what so ever
Staat er waarschijnlijk telkens weer geen set in
anyway, ik vind het ook wel handig om een foldertje makkelijk op te vragen en te sorteren in VBS, dus ik dacht ik ga je code ff misbruiken in een classje

Er staat niet zoveel meer van jou in, maar wie weet heb je er ook wat aan.
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
| set d = new dir
d.open "E:\mp3\", d.SORT_SHUFFLE
for each f in d.files
out f.name
next
class dir
public SORT_DATE_CREATED
public SORT_NAME
public SORT_TYPE
public SORT_SHUFFLE
public files()
private mObjFSO
Private sub class_initialize()
set mObjFSO = createObject("scripting.filesystemobject")
SORT_DATE_CREATED = 4
SORT_NAME = 1
SORT_TYPE =2
SORT_SHUFFLE = 3
end sub
private sub class_terminate()
set mObjFSO = nothing
end sub
Public function open(sPath, sort)
if mObjFSO.FolderExists(sPath) then
set mDir = mObjFSO.GetFolder(sPath)
redim preserve files(mDir.files.count-1)
dim i
i=0
for each f in mDir.Files
set files(i) = f
i=i+1
next
open = sortDir(files,sort)
else
err.raise "001","initialize","Folder does not exist."
end if
end function
private function sortDir(arrSort, sortType)
for i = UBound(arrSort) - 1 To 0 Step -1
for j= 0 to i
flip = false
select case sortType
case SORT_DATE_CREATED
if arrSort(j).datecreated>arrSort(j+1).dateCreated then flip = true
case SORT_NAME
if lcase(arrSort(j).name)>lcase(arrSort(j+1).name) then flip = true
case SORT_TYPE
if lcase(arrSort(j).type)>lcase(arrSort(j+1).type) then flip = true
case SORT_SHUFFLE
randomize()
if rnd()>rnd() then flip = true
end select
if flip then
set temp=arrSort(j+1)
set arrSort(j+1)=arrSort(j)
set arrSort(j)=temp
end if
next
next
sortDir = arrSort
end function
end class
function out(str)
wscript.stdout.writeline str
end function |
edit, de shuffle zal zo nog niet helemaal goed werken bedenk ik net...
[
Voor 3% gewijzigd door
j_du_pee op 08-12-2004 11:34
]