|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
16-07-2012, 13.33.02 | #1 |
Senior Member
Registrato: 30-09-2003
Loc.: Genova
Messaggi: 274
|
[Visual Studio 2010 Express] Programmino per rinominare file
PERCHE'??? In ufficio devo archiviare le email in un determinato modo, ma non abbiamo trovato nessun programma di archiviazione che ci soddisfi. In pratica esportando da Windows Live Mail mi trovo file in questo formato: 4C8D33AF-00000D55.eml e voglio modificarlo ad esempio in: 2010-03-02 12.30.48 [Subj]verificare sezioni.eml quindi anno, mese, giorno, ora e oggetto Il problema è che dopo aver rinominato un tot di file si ferma sempre su un file specifico dicendomi che "Impossibile completare l'operazione. Nel percorso 'XXXXXX' è già presente un file." Il file però non è presente (almeno non con quel nome); ho inserito anche un controllino nelle ultime righe ma non funziona. help me! |
16-07-2012, 13.33.58 | #2 |
Senior Member
Registrato: 30-09-2003
Loc.: Genova
Messaggi: 274
|
Rif: [Visual Studio 2010 Express] Programmino per rinominare file
Questo è il tabulato che ho tirato giù:
Module Module1 Sub Main() Dim file Dim NuovoNome 'Loop through each file in the folder For Each file In My.Computer.FileSystem.GetFiles("C:\Users\zilli\De sktop\POSTA\", FileIO.SearchOption.SearchAllSubDirectories) If file.contains(".eml") = False Then My.Computer.FileSystem.DeleteFile(file) ElseIf file.Contains("[Subj]") Then Else 'leggi righe da file Dim sr As IO.StreamReader = IO.File.OpenText(file) Dim testlinea As String Dim Data As String = 0 Dim Oratrim As String = 0 Dim Datatrim(0 To 2) As String Dim Soggetto As String = 0 Do testlinea = sr.ReadLine() If testlinea.Contains("Subject: ") Then Soggetto = testlinea ElseIf testlinea.Contains("Date: ") Then Data = testlinea End If Loop Until Data <> "0" And Soggetto <> "0" 'eliminare caratteri non consentiti e modificare il SOGGETTO Soggetto = Replace(Soggetto, "Subject: ", "[Subj]") Soggetto = Replace(Soggetto, ":", "_") Soggetto = Replace(Soggetto, "\", "_") Soggetto = Replace(Soggetto, "/", "_") Soggetto = Replace(Soggetto, ">", "_") Soggetto = Replace(Soggetto, "<", "_") Soggetto = Replace(Soggetto, "?", "_") Soggetto = Replace(Soggetto, "*", "_") Soggetto = Replace(Soggetto, "|", "_") Soggetto = Replace(Soggetto, "*** SPAM ***", "SPAM") Soggetto = Replace(Soggetto, vbTab, " ") Soggetto = Replace(Soggetto, Chr(34), "''") 'eliminare caratteri non consentiti e modificare la DATA Data = Right(Data, 26) Data = Left(Data, 20) Data = Replace(Data, ":", ".") Data = Replace(Data, " Jan ", "-01-") Data = Replace(Data, " Feb ", "-02-") Data = Replace(Data, " Mar ", "-03-") Data = Replace(Data, " Apr ", "-04-") Data = Replace(Data, " May ", "-05-") Data = Replace(Data, " Jun ", "-06-") Data = Replace(Data, " Jul ", "-07-") Data = Replace(Data, " Aug ", "-08-") Data = Replace(Data, " Sep ", "-09-") Data = Replace(Data, " Oct ", "-10-") Data = Replace(Data, " Nov ", "-11-") Data = Replace(Data, " Dec ", "-12-") If Left(Data, 1) = " " Then Data = LTrim(Data) Data = "0" & Data End If Oratrim = Right(Data, 8) 'Data in formato internazionale Datatrim(0) = Left(Data, 2) Datatrim(1) = Left(Data, 5) Datatrim(1) = Right(Datatrim(1), 2) Datatrim(2) = Left(Data, 10) Datatrim(2) = Right(Datatrim(2), 4) Data = Datatrim(2) & "-" & Datatrim(1) & "-" & Datatrim(0) NuovoNome = Data & " " & Oratrim & " " & Soggetto & ".eml" 'Chiude lettura del file sr.Close() 'Rinominare file If My.Computer.FileSystem.FileExists(NuovoNome) = False Then My.Computer.FileSystem.RenameFile(file, NuovoNome) Else Resume Next End If End If Next End Sub End Module |
16-07-2012, 14.57.05 | #3 | |
Forum supporter
WT Expert
Registrato: 13-03-2005
Loc.: Ultima stella a destra
Messaggi: 2.809
|
Rif: [Visual Studio 2010 Express] Programmino per rinominare file
Quota:
Aggiungi alla routine una stampa a video prima di tentare il rename e controlla la corrispondenza (magari con una ricerca del nome file che dovrai creare) con i files gia presenti: se tutto quadra ma continua a dare l'errore, invece di rimpiazzare i singoli caratteri metti il rimpiazzo... Se più basso del primo stampabile > rimpiazza con... Se più alto dell'ultimo stampabile > rimpiazza con... Dove per stampabile consideri il puro alfabeto inglese ABC...XYZ, in modo da eliminare tutte le spurie. |
|
16-07-2012, 16.32.44 | #4 |
Senior Member
Registrato: 30-09-2003
Loc.: Genova
Messaggi: 274
|
Rif: [Visual Studio 2010 Express] Programmino per rinominare file
In realtà mi sembrava che già le ultime 5 righe:
If My.Computer.FileSystem.FileExists(NuovoNome) = False Then My.Computer.FileSystem.RenameFile(file, NuovoNome) Else Resume Next End If bastassero per evitare il problema, al più pensavo non mi rinominasse il file così potevo vedere quali oggetti davano problemi...invece mi si pianta sempre sullo stesso. Ora provo la sostituzione caratteri come dici tu e vediamo (perchè in effetti all'inizio mi ero dimenticato le tabulazioni e ho impiegato un'ora a capire cosa non gli andasse a genio!!!) Intanto ti ringrazio. |
16-07-2012, 18.31.00 | #5 |
Senior Member
Registrato: 30-09-2003
Loc.: Genova
Messaggi: 274
|
Rif: [Visual Studio 2010 Express] Programmino per rinominare file
Eccomi di nuovo...
ho fatto come mi hai detto e effettivamente risolvo la maggior parte dei problemi (in pratica sostituisco qualsiasi carattere che non sia lettera, numero o parentesi quadra con un underscore). Mi rimane però l'errore di prima. Ragionandoci questa secondo me è la motivazione: facendo girare il programma mi rinomina tutti i files, poi facendolo rigirare sempre sulla stessa dir (ma con i file già rinominati) lui non riesce a rinominare il file perchè a questo punto nuovo e vecchio nome coincidono...dovrei inserire un controllo sui nomi ma non riesco a farlo funzionare. |
16-07-2012, 19.03.00 | #6 |
Senior Member
Registrato: 30-09-2003
Loc.: Genova
Messaggi: 274
|
Rif: [Visual Studio 2010 Express] Programmino per rinominare file
EUREKA!
Il problema era il seguente: tra le email c'erano non so per quale motivo due duplicati, quindi email con stesso oggetto data e ora; finchè WLM le esportava venivano dati due nomi differenti ma poi quando le rinominavo chiaramente il nome era lo stesso (per come ho impostato io il programma). Ho inserito il seguente controllo: If file.contains(NuovoNome) = True Then 'Passa oltre Else 'Chiude lettura del file sr.Close() 'Rinominare file Try My.Computer.FileSystem.RenameFile(file, NuovoNome) Catch ex As Exception My.Computer.FileSystem.DeleteFile(file) End Try End If in modo che se non riesce a rinominare il file vuol dire che necessariamente ce n'è già uno identico, per cui lo cancella. |
19-07-2012, 13.39.00 | #7 |
Forum supporter
WT Expert
Registrato: 13-03-2005
Loc.: Ultima stella a destra
Messaggi: 2.809
|
Rif: [Visual Studio 2010 Express] Programmino per rinominare file
|
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
Norman Malware Cleaner - AIUTO | sikano | Sicurezza&Privacy | 7 | 11-04-2008 17.28.32 |
Estrattore di file .EXE di setup | juggler | Software applicativo | 0 | 01-04-2007 20.19.43 |
Dvd Pioneer 107 | pacixone | Masterizzazione Giochi Games | 7 | 25-03-2005 15.10.00 |
problema con file .doc rovinato in office xp 2003...poi risolto... | cippico | Office suite | 0 | 30-04-2004 10.12.07 |
Windows file protection:guida | Deuced | Windows 9x/Me/NT4/2000 | 7 | 16-03-2004 09.25.28 |