Hallo, mir stellt sich folgendes Problem.
Ich habe für jemanden eine Festplatte wiederhergestellt, und somit auch ca 100.000 Dateien der Typen txt; doc; docx und JPG in das Wiederherstellungsverzeichnis kopiert. Das Program mach bei der Wiederherstellung leider etliche Unterordner auf und kopiert so immer nur paar MB in ein VZ.
Wenn ich die Platte nun zurückgebe, würde ich das ganze gerne sortiert abgeben.
1. VZ Bilder
1. VZ DOC etc
Wie kann ich nun alles Verzeichnisse incl. unterordner so durchlaufen und die Dateien entsprechend dann kopieren aber ohne die Unterordnerstrucktur.
Ich habe da schon mal folgenden Ansatz gefunden.
Leider kommt hier immer der Fehler "bOverWrite" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. und
Hier kommt immer ein Syntaxfehler - Optional ByVal bOverWrite As Boolean = True) - Wie muss ich den Code anpassen.
Danke für Euere Hilfe
Holger
Ich habe für jemanden eine Festplatte wiederhergestellt, und somit auch ca 100.000 Dateien der Typen txt; doc; docx und JPG in das Wiederherstellungsverzeichnis kopiert. Das Program mach bei der Wiederherstellung leider etliche Unterordner auf und kopiert so immer nur paar MB in ein VZ.
Wenn ich die Platte nun zurückgebe, würde ich das ganze gerne sortiert abgeben.
1. VZ Bilder
1. VZ DOC etc
Wie kann ich nun alles Verzeichnisse incl. unterordner so durchlaufen und die Dateien entsprechend dann kopieren aber ohne die Unterordnerstrucktur.
Ich habe da schon mal folgenden Ansatz gefunden.
VB.NET-Quellcode
- Imports System.IO
- Public Class Form1
- Public Sub CopyFolder(ByVal sSrcPath As String, _
- ByVal sDestPath As String, _
- Optional ByVal bSubFolder As Boolean = True)
- Optional ByVal bOverWrite As Boolean = True)
- ' Falls Zielordner nicht existiert, jetzt erstellen
- If Not System.IO.Directory.Exists(sDestPath) Then
- System.IO.Directory.CreateDirectory(sDestPath)
- End If
- ' zunächst alle Dateien des Quell-Ordners ermitteln
- ' und kopieren
- Dim sFiles() As String = System.IO.Directory.GetFiles(sSrcPath)
- Dim sFile As String
- For i As Integer = 0 To sFiles.Length - 1
- ' Falls Datei im Zielordner bereits existiert, nur
- ' kopieren, wenn Parameter "bOverWrite" auf True
- ' festgelegt ist
- sFile = sFiles(i).Substring(sFiles(i).LastIndexOf("\") + 1)
- If bOverWrite() Or Not System.IO.File.Exists(sDestPath & "\" & sFile) Then
- System.IO.File.Copy(sFiles(i), sDestPath & "\" & sFile, True)
- End If
- Next i
- If bSubFolder Then
- ' jetzt alle Unterordner ermitteln und die CopyFolder-Funktion
- ' rekursiv aufrufen
- Dim sDirs() As String = System.IO.Directory.GetDirectories(sSrcPath)
- Dim sDir As String
- For i As Integer = 0 To sDirs.Length - 1
- If sDirs(i) <> sDestPath Then
- sDir = sDirs(i).Substring(sDirs(i).LastIndexOf("\") + 1)
- CopyFolder(sDirs(i), sDestPath & "\" & sDir, True, bOverWrite)
- End If
- Next i
- End If
- End Sub
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- ' Ordner "d:\temp" einschl. aller Unterordner
- ' nach "d:\Kopie von temp" kopieren
- CopyFolder("d:\Test", "d:\Ziel")
Leider kommt hier immer der Fehler "bOverWrite" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. und
Hier kommt immer ein Syntaxfehler - Optional ByVal bOverWrite As Boolean = True) - Wie muss ich den Code anpassen.
Danke für Euere Hilfe
Holger