Hoi,
Situatie
Ik heb een directory op een server waar een zeer groot aantal files instaan. Dit zijn er zoveel dat de windows verkenner op zijn bek gaat tijdens het openen.
Deze moeten verplaatst worden naar directorys die ingedeeld zijn per maand + jaar. Bijvoorbeeld: f:\1-2004
Mogelijke oplossing
Een vb.Net appje die de creationdate van een file pakt, en deze dan naar de juiste dir moved.
Dit werkt wel, alleen met een klein aantal files.
Probleem
Door het grote aantal files gaat dit appje ook onderuit met de melding:
Ik heb even snel wat in elkaar gezet om dit voor elkaar te krijgen, met de volgende code:
Nu neem ik aan dat het appje eerst alles in probeert te lezen, vervolgens probeert te kopiëren.
Hoe kan ik dit nu anders oplossen?
Het is misschien niet de allerbeste code, maar dat heeft meer met mijn kennis van .Net te maken
Situatie
Ik heb een directory op een server waar een zeer groot aantal files instaan. Dit zijn er zoveel dat de windows verkenner op zijn bek gaat tijdens het openen.
Deze moeten verplaatst worden naar directorys die ingedeeld zijn per maand + jaar. Bijvoorbeeld: f:\1-2004
Mogelijke oplossing
Een vb.Net appje die de creationdate van een file pakt, en deze dan naar de juiste dir moved.
Dit werkt wel, alleen met een klein aantal files.
Probleem
Door het grote aantal files gaat dit appje ook onderuit met de melding:
code:
1
2
3
4
5
6
7
8
| Unhandled Exception: System.IndexOutOfRangeException: Index was outside the boun ds of the array. at System.Array.InternalGetValue(Int32 index1, Int32 index2, Int32 index3) at System.Array.GetValue(Int32 index) at Microsoft.VisualBasic.CompilerServices.LateBinding.LateIndexGet(Object o, Object[] args, String[] paramnames) at DirCleaner.Module1.CopyFilesToMonth() at DirCleaner.Module1.Main() |
Ik heb even snel wat in elkaar gezet om dit voor elkaar te krijgen, met de volgende code:
Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| Dim di As New DirectoryInfo("F:\uploads\hr") Dim afi As FileInfo() = di.GetFiles("*.jpg") Dim fi As FileInfo Dim i As Integer Dim bestandsnaam As String Dim bestandsdatum As DateTime Dim MaandSplit As String Dim MaandSplitArray As Array Dim JaarSplit As String Dim foldernaam as String For Each fi In afi bestandsnaam = fi.Name bestandsdatum = fi.CreationTime MaandSplitArray = Split(bestandsdatum, "-") MaandSplit = MaandSplitArray(1) JaarSplit = Left(MaandSplitArray(2), 4) foldernaam = MaandSplit & " - " & Jaarsplit fi.MoveTo("F:\" & foldernaam & "\" & bestandsnaam) Next |
Nu neem ik aan dat het appje eerst alles in probeert te lezen, vervolgens probeert te kopiëren.
Hoe kan ik dit nu anders oplossen?
Het is misschien niet de allerbeste code, maar dat heeft meer met mijn kennis van .Net te maken
[ Voor 3% gewijzigd door TeeDee op 03-06-2004 12:07 ]
Heart..pumps blood.Has nothing to do with emotion! Bored