Telefonino.net network
 
| 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 » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 16-07-2012, 13.33.02   #1
willy.z
Senior Member
 
L'avatar di willy.z
 
Registrato: 30-09-2003
Loc.: Genova
Messaggi: 274
willy.z promette bene
[Visual Studio 2010 Express] Programmino per rinominare file

Ciao a tutti, come da titolo sto cercando di creare un semplicissimo è programmino per rinominare alcuni 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!
willy.z non è collegato   Rispondi citando
Vecchio 16-07-2012, 13.33.58   #2
willy.z
Senior Member
 
L'avatar di willy.z
 
Registrato: 30-09-2003
Loc.: Genova
Messaggi: 274
willy.z promette bene
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
willy.z non è collegato   Rispondi citando
Vecchio 16-07-2012, 14.57.05   #3
retalv
Forum supporter
WT Expert
 
L'avatar di retalv
 
Registrato: 13-03-2005
Loc.: Ultima stella a destra
Messaggi: 2.809
retalv è un gioiello raroretalv è un gioiello raroretalv è un gioiello raroretalv è un gioiello raro
Rif: [Visual Studio 2010 Express] Programmino per rinominare file

Quota:
Inviato da willy.z Visualizza messaggio
Il file però non è presente (almeno non con quel nome); ho inserito anche un controllino nelle ultime righe ma non funziona
Potrebbe essere la presenza di un carattere non stampabile o che relamente il file esiste già, anche se non ti sembra.

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.
retalv non è collegato   Rispondi citando
Vecchio 16-07-2012, 16.32.44   #4
willy.z
Senior Member
 
L'avatar di willy.z
 
Registrato: 30-09-2003
Loc.: Genova
Messaggi: 274
willy.z promette bene
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.
willy.z non è collegato   Rispondi citando
Vecchio 16-07-2012, 18.31.00   #5
willy.z
Senior Member
 
L'avatar di willy.z
 
Registrato: 30-09-2003
Loc.: Genova
Messaggi: 274
willy.z promette bene
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.
willy.z non è collegato   Rispondi citando
Vecchio 16-07-2012, 19.03.00   #6
willy.z
Senior Member
 
L'avatar di willy.z
 
Registrato: 30-09-2003
Loc.: Genova
Messaggi: 274
willy.z promette bene
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.
willy.z non è collegato   Rispondi citando
Vecchio 19-07-2012, 13.39.00   #7
retalv
Forum supporter
WT Expert
 
L'avatar di retalv
 
Registrato: 13-03-2005
Loc.: Ultima stella a destra
Messaggi: 2.809
retalv è un gioiello raroretalv è un gioiello raroretalv è un gioiello raroretalv è un gioiello raro
Rif: [Visual Studio 2010 Express] Programmino per rinominare file

Quota:
Inviato da willy.z Visualizza messaggio
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
c.v.d.
retalv non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

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

Orario GMT +2. Ora sono le: 15.08.48.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.