Salve ho un problema a creare un ciclo che "automatizzi" la mia libreria che gestisce i libri in e pub e pdf, vorrei che riconoscesse oltre alla cartella selezionata anche le sue sotto cartelle esempio:
Dir master nome Pippo che contiene .epub e .pdf al interno ha anche delle sub dir Pippo1 ,Pippo2 che a sua volta contengono .epub e .pdf e magari contengono altre altre sub dir
Funzionamento della libreria : il programma smista libri salvati in questo modo qua "cartella prov - autore - titolo.epub/pdf" gli smista in base alla prima lettera del autore nelle cartelle dalla a alla z rinominadogli in questo modo "autore - titolo - cartella prov.epub/pdf" pero lo fa sollo della cartella principale e non anche delle sotto cartelle
ecco il codice che ho scritto per ora
Imports System.IO
Public Class Form1
Dim i As Integer = 0
Dim OOldfolder As String = Nothing
Dim PathFolderX As String = Nothing
Dim OldFolder As String = Nothing
Dim fileound As String = Nothing
Dim ArrayList As String = Application.StartupPath
Dim directoryName As String = Nothing
Dim array() As String = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "Z", "J", "K", "W", "X", "Y", "Z"}
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
'Creazione delle cartelle principali
For i = 0 To array.Count - 1
If Directory.Exists(ArrayList & "\" & array(i)) = False Then
Directory.CreateDirectory(ArrayList & "\" & array(i))
TextBox2.Text = "Cartelle create: " & i
Else
TextBox2.Text = "Cartelle esistenti: " & i
End If
Next
Catch ex As Exception
End Try
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
FolderBrowser.ShowDialog()
If ShowDialog.OK Then
TextBox1.Text = FolderBrowser.SelectedPath
OldFolder = TextBox1.Text
directoryName = Path.GetDirectoryName(TextBox1.Text,)
TextBox1.Text = TextBox1.Text.Replace(directoryName & "\", "") 'Ottengo il nome della cartella di provenienza
directoryName = TextBox1.Text
' controllo se sono presenti altre cartelle
OOldfolder = ("C:\Users\Utente\Pictures\BV Collection\cartella bv")
End If
End Sub
'End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Try
Dim di As New IO.DirectoryInfo(OldFolder)
Dim dis As New IO.DirectoryInfo(OOldfolder)
Dim aryFile As IO.FileInfo() = di.GetFiles("*.epub") ', searchOption:=SearchOption.AllDirectories)
Dim aryFile2 As IO.FileInfo() = di.GetFiles("*.pdf") ', searchOption:=SearchOption.AllDirectories)
Dim aryFile3 As IO.FileInfo() = dis.GetFiles("*.epub") ', searchOption:=SearchOption.AllDirectories)
Dim _File As IO.FileInfo
Dim _File2 As IO.FileInfo
Dim _File3 As IO.FileInfo
Dim dividi(2) As String
Dim Conta As Integer = 0
Dim FileEsistente As Integer = 0
TextBox2.Text = ""
If TextBox1.Text = "" Then
MsgBox("Attenzione, il percorso della cartella risulta vuoto, perfavore selezionare la cartella contenente tutti i file .EPUB e riprovare!", MsgBoxStyle.Critical, "ATTENZIONE")
End If
'ricerca ind cartelle
For Each _File In aryFile
dividi = Split(_File.Name, "- ")
Dim substring As String = dividi(1).Substring(0, 1)
dividi(2) = dividi(2).Replace(".epub", "")
'Avvio Smistamento
For i = 0 To array.Count - 1
If substring = array(i) Then
Dim NewFileName As String = dividi(1) & " - " & dividi(2) & " - " & dividi(0)
If File.Exists(ArrayList & "\" & array(i) & "\" & NewFileName & ".epub") = False Then
Conta += 1
File.Copy(OldFolder & "\" & _File.Name, ArrayList & "\" & array(i) & "\" & _File.Name)
My.Computer.FileSystem.RenameFile(ArrayList & "\" & array(i) & "\" & _File.Name, NewFileName & ".epub")
Else
FileEsistente += 1
End If
End If
Next
Next
For Each _File3 In aryFile3
dividi = Split(_File3.Name, "- ")
Dim substring As String = dividi(1).Substring(0, 1)
dividi(2) = dividi(2).Replace(".epub", "")
'Avvio Smistamento
For i = 0 To array.Count - 1
If substring = array(i) Then
Dim NewFileName As String = dividi(1) & " - " & dividi(2) & " - " & dividi(0)
If File.Exists(ArrayList & "\" & array(i) & "\" & NewFileName & ".epub") = False Then
Conta += 1
File.Copy(OOldfolder & "\" & _File3.Name, ArrayList & "\" & array(i) & "\" & _File3.Name)
My.Computer.FileSystem.RenameFile(ArrayList & "\" & array(i) & "\" & _File3.Name, NewFileName & ".epub")
Else
FileEsistente += 1
End If
End If
Next
Next
For Each _File2 In aryFile2
dividi = Split(_File2.Name, "- ")
Dim substring As String = dividi(1).Substring(0, 1)
dividi(2) = dividi(2).Replace(".pdf", "")
'Avvio Smistamento
For i = 0 To array.Count - 1
If substring = array(i) Then
Dim NewFileName As String = dividi(1) & " - " & dividi(2) & " - " & dividi(0)
If File.Exists(ArrayList & "\" & array(i) & "\" & NewFileName & ".pdf") = False Then
Conta += 1
File.Copy(OldFolder & "\" & _File2.Name, ArrayList & "\" & array(i) & "\" & _File2.Name)
My.Computer.FileSystem.RenameFile(ArrayList & "\" & array(i) & "\" & _File2.Name, NewFileName & ".pdf")
Else
FileEsistente += 1
End If
End If
Next
Next
TextBox2.Text = TextBox2.Text & "Totale file epub nella cartella: " & aryFile.Count & vbCrLf
TextBox2.Text = TextBox2.Text & "Totale file pdf nella cartella: " & aryFile2.Count & vbCrLf
TextBox2.Text = TextBox2.Text & "Totale file copiati e rinominati: " & Conta & vbCrLf
TextBox2.Text = TextBox2.Text & "File esistent non copiati controlla digiturura del file: " & FileEsistente & vbCrLf
TextBox2.Text = TextBox2.Text & "Fine!" & vbCrLf
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
End Class