Elenco file in file di testo

di il
26 risposte

Elenco file in file di testo

Buongiorno a tutti,

ho un file batch che generea in lista.txt tutti i percorsi le foto presenti in una cartella e relative sottocartelle (dir C:\miacartella\foto\*.jpg /b /on >C:\miacartella\foto\lista.txt)

l'ho tradotto in vb.net usando il seguente codice:

For Each foundFile As String In
My.Computer.FileSystem.GetFiles("C:\miacartella\foto\", FileIO.SearchOption.SearchAllSubDirectories, "*.jpg")
foundFile = foundFile & vbCrLf
My.Computer.FileSystem.WriteAllText("C:\miacartella\foto\LISTA.TXT", foundFile, True)
Next


funziona ma ci mette troppo tempo rispetto al file batch (20/30 secondi per il batch contro oltre il minuto per l'eseguibile vb.net)

E' un problema di metodo o si può cambiare codice migliorando le prestazioni?

grazie in anticipo

Nico

26 Risposte

  • Re: Elenco file in file di testo

    Il programma in vb.net è in debug od in release?,l'hai installato?
  • Re: Elenco file in file di testo

    Ciao,
    è in release già compilata e testata su un pc differente.
    Sulla mia macchina sia in debug che release ci mette meno poiché gira su ssd ma sempre più tempo rispetto al batch.
    Nico
  • Re: Elenco file in file di testo

    Prova ad alzare la priorità del processo con qualcosa di simile(prima del ciclo) :
    Dim myProcess As System.Diagnostics.Process = _
    	System.Diagnostics.Process.GetCurrentProcess()
    myProcess.PriorityClass = System.Diagnostics.ProcessPriorityClass.High
  • Re: Elenco file in file di testo

    Ok, provo appena rientro in ufficio e ti aggiorno.
    Intanto ti ringrazio
    Nico
  • Re: Elenco file in file di testo

    Se non migliora potresti portare questo fuori dal ciclo "My.Computer.FileSystem.GetFiles("C:\miacartella\foto\", FileIO.SearchOption.SearchAllSubDirectories, "*.jpg")" e metterne il risultato in una variabile,non vorrei che fosse calcolato ad ogni ciclo
  • Re: Elenco file in file di testo

    Anche con priorità più alta il risultato non cambia
    per il secondo metodo, non ho compreso come passare per variabile il risultato della scansione delle cartelle.

    Nico
  • Re: Elenco file in file di testo

    >>>per il secondo metodo, non ho compreso come passare per variabile il risultato della scansione delle cartelle.
    dicevo di caricare il valore in una variabile , ma ripensandoci non credo che venga calcolata ad ogni iterazione,magari qualcun altro ha qualche altro suggerimento...
  • Re: Elenco file in file di testo

    Stai facendo un "applicazione console" od un applicazione "windows forms"?,in quest'ultimo caso potresti provare a spostare il codice in un applicazione console
  • Re: Elenco file in file di testo

    E' una windows form con dei pulsanti e messaggi descrittivi in base alle operazioni svolte al momento.
    in realtà la form esegue parecchio codice ed il blocco che ho postato viene eseguito al click di un pulsante di avvio e viene rieseguito a chiusura procedura.
    si tratta di un programmino che ho realizzato per sincronizzare in remoto 2 cartelle in cui quella utente diventa paritetica a quella remota nel contenuto.
    Nico
  • Re: Elenco file in file di testo

    Prova così
            Dim fileNames = My.Computer.FileSystem.GetFiles("C:\miacartella\foto", FileIO.SearchOption.SearchAllSubDirectories, "*.jpg")
            File.WriteAllLines("C:\miacartella\foto\LISTA.TXT", fileNames)
  • Re: Elenco file in file di testo

    Niente, esegue sempre intorno a 1:40 minuti, credo che alla fine sia pure influenzato dalle prestazioni della macchina e dal supporto in scrittura. Il batch invece continua a girare nell'ordine di 15 secondi.
    Mi sa che o lascio la form con così tenendomi i 2 minuti di attesa a ciclo o provo ad usare la procedura rikshell per eseguire il batch velocemente...
  • Re: Elenco file in file di testo

    Potresti mettere un breakpoint dove inizia il ciclo ed uno alla sua uscita aggiungendo una qualsiasi istruzione fuori dal ciclo (ad es. Dim num1 As Integer = 3) per vedere se è solo quello che rallenta
  • Re: Elenco file in file di testo

    Prova allora
            Dim oProcess As New Process()
            Dim oStartInfo As New ProcessStartInfo("Cmd.exe", "/c Dir C:\miacartella\foto\*.jpg /a /b /s > C:\miacartella\foto\LISTA.TXT")
            oStartInfo.UseShellExecute = True
            oProcess.StartInfo = oStartInfo
            oProcess.Start()
  • Re: Elenco file in file di testo

    Hai un anivirus?
    Prova a spegnerlo e se funziona, riaccendero e configurarlo per NON controllare i file con estensione ".jpg"
Devi accedere o registrarti per scrivere nel forum
26 risposte