Discussione:
Rinominare tutti i file di una cartella
(troppo vecchio per rispondere)
Alfio
2015-02-23 07:09:17 UTC
Permalink
Buongiorno a tutti, potreste indicarmi un metodo per eliminare dal nome del file tutto ciò che si trova alla fine prima dell'estensione racchiuso tra patentesi? Esempio "nomefile (xxxxx).ext" devo eliminare quello che c'è in parentesi, parentesi comprese.

Grazie

Alfio
Alfio
2015-02-23 12:39:32 UTC
Permalink
Post by Alfio
Buongiorno a tutti, potreste indicarmi un metodo per eliminare dal nome del file tutto ciò che si trova alla fine prima dell'estensione racchiuso tra patentesi? Esempio "nomefile (xxxxx).ext" devo eliminare quello che c'è in parentesi, parentesi comprese.
Grazie
Alfio
...dimenticavo... il tutto deve avvenire al click del pulsante "Rinomina".
Alfio
2015-02-24 16:55:41 UTC
Permalink
Post by Alfio
Grazie
Alfio
ma c'è qualcosa che non va nella mia richiesta d'aiuto? se si, indicatemi cosa, per favore...

Alfio
Maurizio Borrelli
2015-02-24 17:43:55 UTC
Permalink
Post by Alfio
Post by Alfio
Buongiorno a tutti, potreste indicarmi un metodo per eliminare dal nome del file tutto ciò che si trova alla fine prima dell'estensione racchiuso tra patentesi? Esempio "nomefile (xxxxx).ext" devo eliminare quello che c'è in parentesi, parentesi comprese.
...dimenticavo... il tutto deve avvenire al click del pulsante "Rinomina".
Ciao Alfio.

Un modo:

Private Sub cmdRinomina_Click()
On Error GoTo ErrH
Dim strPath As String
Dim strFile As String
Dim strNew As String

strPath = "D:\Percorso\RenTest\"
strFile = "* (*).*"
If MsgBox("Si stanno per rinominare tutti i file" _
& vbNewLine & "corrispondenti alla maschera:" _
& vbNewLine & "'" & strPath & strFile & "'" _
& vbNewLine & vbNewLine & "Confermi?" _
, vbOKCancel Or vbQuestion _
, "Rinomina" _
) <> vbOK Then Exit Sub

strFile = Dir(strPath & strFile)
Do While Len(strFile)
strNew = Trim$(Left$(strFile, InStr(1, strFile, "(") - 1)) _
& Trim$(Mid$(strFile, InStr(1, strFile, ")") + 1))
Debug.Print strFile, strNew
Name strPath & strFile As strPath & strNew
strFile = Dir
Loop
MsgBox "Fatto!", vbOKOnly Or vbInformation, "Rinomina"

ExtP:
Exit Sub

ErrH:
If Err = 58 Then
MsgBox "File: '" & strFile & "' > '" & strNew & "'." _
& vbNewLine & Err.Description _
, vbOKOnly Or vbExclamation _
, "ATTENZIONE!"
Resume Next
Else
MsgBox "File: '" & strFile & "'." _
& vbNewLine & Err.Description _
, vbOKOnly Or vbCritical _
, "ERR#" & CStr(Err.Number)
Resume ExtP
End If

End Sub
--
Ciao!
Maurizio
Alfio
2015-02-24 18:53:34 UTC
Permalink
Post by Maurizio Borrelli
Maurizio
Grazie Maurizio per l'interessamento,
purtroppo non va, non dà nessuno errore ma quando dice "Fatto" in verità non ha fatto nulla..., probabilmente perché non avrò spiegato bene la composizione del file da rinominare, te ne mostro uno:

0246 -- 000 (292) (Copia).png

c'è sempre un codice iniziale, non ha una lunghezza fissa;
seguono i due trattini " -- " con spazio prima e spazio dopo;
un altro codice, racchiuso tra parentesi;
infine il copia racchiuso tra parentesi ed è quello che dovrei eliminare ogni volta da tutti i file, l'estensione può essere di qualsiasi formato grafico...

Ciao

Alfio
Maurizio Borrelli
2015-02-24 19:06:21 UTC
Permalink
Post by Alfio
Grazie Maurizio per l'interessamento,
0246 -- 000 (292) (Copia).png
c'è sempre un codice iniziale, non ha una lunghezza fissa;
seguono i due trattini " -- " con spazio prima e spazio dopo;
un altro codice, racchiuso tra parentesi;
infine il copia racchiuso tra parentesi ed è quello che dovrei eliminare ogni volta da tutti i file, l'estensione può essere di qualsiasi formato grafico...
Peggio per te. :-P
Se un esempio non e' esemplare che esempio e'?
Ti ricordo che il tuo esempio, in base al quale ho scritto la routine, era:
"nomefile (xxxxx).ext"
Ora viene fuori che invece è:
"0246 -- 000 (292) (Copia).png"
Ma la mia routine ti va bene lo stesso. Basta adattarla alla tua realta'. Se non sai come fare domanda, pero' domanda dopo averla studiata almeno un po' e sperimentata con file i cui nomi siano del tipo "nomefile (xxxxx).ext". Vedrai
che ci riesci.
maurino
2015-02-25 08:29:57 UTC
Permalink
Post by Alfio
Buongiorno a tutti, potreste indicarmi un metodo per eliminare dal nome del file tutto ciò che si trova alla fine prima dell'estensione racchiuso tra patentesi? Esempio "nomefile (xxxxx).ext" devo eliminare quello che c'è in parentesi, parentesi comprese.
Grazie
Alfio
se hanno tutti lo stesso "testo" e la parte variabile da numerare (come
una cartella di foto: foto_1.jpg foto_2.jpg ecc.) lo puoi fare anche
solo con esplora risorse in automatico (selezioni tutti i file da
rinominare, metti il puntatore sul primo della serie, pulsante destro
del mouse, rinomina e scrivi il testo). Se i testi sono diversi nei vari
file non so. Io arrivo fin qui...
--
mauro
Alfio
2015-02-26 12:45:53 UTC
Permalink
Post by maurino
se hanno tutti lo stesso "testo" e la parte variabile da numerare (come
una cartella di foto: foto_1.jpg foto_2.jpg ecc.) lo puoi fare anche
solo con esplora risorse in automatico (selezioni tutti i file da
rinominare, metti il puntatore sul primo della serie, pulsante destro
del mouse, rinomina e scrivi il testo). Se i testi sono diversi nei vari
file non so. Io arrivo fin qui...
--
mauro
Ciao Mauro, hai ragione, ma per per me "nomefile (xxxxx).ext" era comprensivo anche delle seconde parentesi... dando per scontato che chi avrebbe dovuto aiutarmi lo sapesse.... Scusami

Detto ciò ho sistemato la maschera di ricerca ed ho ottenuto quasi quello che volevo perchè mi ha si rinominato i file ma, purtroppo, eliminandomi dal nome del file il primo gruppo di parentesi che invece deve assolutamente restare e non il secondo. Però non riesco in nessuno modo a modificare la maschera in tal senso...non riesco ad arrivare al secondo gruppo.

Ciao

Alfio
Maurizio Borrelli
2015-02-26 15:08:44 UTC
Permalink
Post by Alfio
Detto ciò ho sistemato la maschera di ricerca ed ho ottenuto quasi quello che volevo perchè mi ha si rinominato i file ma, purtroppo, eliminandomi dal nome del file il primo gruppo di parentesi che invece deve assolutamente restare e non il secondo. Però non riesco in nessuno modo a modificare la maschera in tal senso...non riesco ad arrivare al secondo gruppo.
Ciao Alfio.

Prova cosi':

Public Sub RenTest()
On Error GoTo ErrH
Dim strPath As String
Dim strFile As String
Dim strNew As String
Dim intPos As String

strPath = "D:\Percorso\RenTest\"
'strFile = "* (*).*"
strFile = "*(*)*(*)*.*"
strFile = Dir(strPath & strFile)
Do While Len(strFile)
'strNew = Trim$(Left$(strFile, InStr(1, strFile, "(") - 1)) _
& Trim$(Mid$(strFile, InStr(1, strFile, ")") + 1))
intPos = InStr(1, strFile, "(") + 1
strNew = Trim$(Left$(strFile, InStr(intPos, strFile, "(") - 1))
intPos = InStr(1, strFile, ")") + 1
strNew = strNew _
& Trim$(Mid$(strFile, InStr(intPos, strFile, ")") + 1))
Debug.Print strFile; " > "; strNew
Name strPath & strFile As strPath & strNew
strFile = Dir
Loop

ExtP:
Exit Sub

ErrH:
If Err = 58 Then
MsgBox "File: '" & strFile & "' > '" & strNew & "'." _
& vbNewLine & Err.Description _
, vbOKOnly Or vbExclamation _
, "ATTENZIONE!"
Resume Next
Else
MsgBox "File: '" & strFile & "'." _
& vbNewLine & Err.Description _
, vbOKOnly Or vbCritical _
, "ERR#" & CStr(Err.Number)
Resume ExtP
End If

End Sub
--
Ciao!
Maurizio
Maurizio Borrelli
2015-02-27 16:58:41 UTC
Permalink
Post by Maurizio Borrelli
Post by Alfio
Detto ciò ho sistemato la maschera di ricerca ed ho ottenuto quasi quello che volevo perchè mi ha si rinominato i file ma, purtroppo, eliminandomi dal nome del file il primo gruppo di parentesi che invece deve assolutamente restare e non il secondo. Però non riesco in nessuno modo a modificare la maschera in tal senso...non riesco ad arrivare al secondo gruppo.
Ciao Alfio.
[...]

Oppure:

Option Compare Database
Option Explicit

Public Sub RenTest()
On Error GoTo ErrH
Dim strPath As String
Dim strFile As String
Dim strNew As String

strPath = "D:\Percorso\RenTest\" ' <--- MODIFICARE!
strFile = "*(*)*(*)*.*"
strFile = Dir(strPath & strFile)
Do While Len(strFile)
strNew = Trim$(Left$(strFile, InStrRev(strFile, "(") - 1)) _
& Trim$(Mid$(strFile, InStrRev(strFile, ")") + 1))
Debug.Print strFile; " > "; strNew
Name strPath & strFile As strPath & strNew
strFile = Dir
Loop

ExtP:
Exit Sub

ErrH:
If Err = 58 Then
MsgBox "File: '" & strFile & "' > '" & strNew & "'." _
& vbNewLine & Err.Description _
, vbOKOnly Or vbExclamation _
, "ATTENZIONE!"
Resume Next
Else
MsgBox "File: '" & strFile & "'." _
& vbNewLine & Err.Description _
, vbOKOnly Or vbCritical _
, "ERR#" & CStr(Err.Number)
Resume ExtP
End If

End Sub
--
Ciao!
Maurizio
Alfio
2015-03-09 06:42:32 UTC
Permalink
Ciao Maurizio, finalmente grazie al tuo aiuto ho risolto, Grazie davvero.

Avrei ancora bisogno del tuo aiuto se puoi ed é sempre sul rinominare file.
Espongo il problema: devo modificare i nomi di migliaia di file (immagini di articoli). Il nome di questi file é il loro codice articolo che corrisponde al codice articolo inserito nella tabella TArticoli (codarticolo). Devono essere rinominati secondo questa maschera: codice articolo -- (000) (idarticolo).ext
Ovviamente l'id articolo é quello della tabella TArticoli e " -- (000)" é fissa.

Ringrazio sin d'ora te e tutti quelli che potranno suggerirmi la soluzione.

Alfio
Maurizio Borrelli
2015-03-09 09:57:42 UTC
Permalink
Post by Alfio
Ciao Maurizio, finalmente grazie al tuo aiuto ho risolto, Grazie davvero.
Mi fa piacere! Grazie del cortese riscontro.

[...]
Post by Alfio
devo modificare i nomi di migliaia di file (immagini di articoli). Il nome di questi file é il loro codice articolo che corrisponde al codice articolo inserito nella tabella TArticoli (codarticolo). Devono essere rinominati secondo questa maschera: codice articolo -- (000) (idarticolo).ext
Ovviamente l'id articolo é quello della tabella TArticoli e " -- (000)" é fissa.
[...]

Ciao Alfio.

Vediamo se ho capito.

Hai una tabella 'TArticoli' con i seguenti campi:
idarticolo (Duplicati non ammessi)
codarticolo (Duplicati non ammessi)

In un certo percorso hai dei file col seguente nome:
codarticolo.ext
(E non esistono file con lo stesso nome e diversa estensione. Ma quei file non hanno tutti la stessa estensione? Per esempio tutti .jpg. O tutti .bmp. Ecc.)

Vuoi rinominarli in:
codarticolo<spazio>--<spazio>(000)<spazio>(idarticolo).ext

Ho capito giusto?
--
Ciao!
Maurizio
Alfio
2015-03-09 10:06:56 UTC
Permalink
Post by Maurizio Borrelli
Mi fa piacere! Grazie del cortese riscontro.
Era il minimo che io potessi fare.
Post by Maurizio Borrelli
Vediamo se ho capito.
idarticolo (Duplicati non ammessi)
codarticolo (Duplicati non ammessi)
Esatto
Post by Maurizio Borrelli
codarticolo.ext
(E non esistono file con lo stesso nome e diversa estensione. Ma quei file non hanno tutti la stessa estensione? Per esempio tutti .jpg. O tutti .bmp. Ecc.)
Sono tutti .jpg
Post by Maurizio Borrelli
codarticolo<spazio>--<spazio>(000)<spazio>(idarticolo).ext
Ho capito giusto?
Perfetto!!

Alfio
Maurizio Borrelli
2015-03-09 11:13:44 UTC
Permalink
Il giorno lunedì 9 marzo 2015 11:06:57 UTC+1, Alfio ha scritto:
[...]
Post by Alfio
Post by Maurizio Borrelli
idarticolo (Duplicati non ammessi)
codarticolo (Duplicati non ammessi)
Esatto
Post by Maurizio Borrelli
codarticolo.ext
(E non esistono file con lo stesso nome e diversa estensione. Ma quei file non hanno tutti la stessa estensione? Per esempio tutti .jpg. O tutti .bmp. Ecc.)
Sono tutti .jpg
Post by Maurizio Borrelli
codarticolo<spazio>--<spazio>(000)<spazio>(idarticolo).ext
Ho capito giusto?
Perfetto!!
Ciao Alfio,
allora potresti fare cosi':

Option Compare Database
Option Explicit

Public Sub Test()
Const cstrPath = "D:\Archivi\Forums\icaa\Rinominare file\"
Const cstrExt = ".jpg"
Const cstrOldMask = "%cd%" & cstrExt
Const cstrNewMask = "%cd% -- (000) (%id%)" & cstrExt
Const cstrTblName = "TArticoli"
Const cstrIdName = "idarticolo"
Const cstrCdName = "codarticolo"

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim fdId As DAO.Field
Dim fdCd As DAO.Field
Dim sql As String
Dim strOldPathName As String
Dim strNewPathName As String

sql = "SELECT" _
& " T." & cstrIdName _
& ",T." & cstrCdName _
& " FROM " & cstrTblName & " AS T" _
& ";"
Set db = Application.CurrentDb
Set rs = db.OpenRecordset(sql, dbOpenForwardOnly, dbReadOnly)
With rs
If .BOF And .EOF Then
' NO RECS!
Else
Set fdId = .Fields(cstrIdName)
Set fdCd = .Fields(cstrCdName)
Do Until .EOF
strOldPathName = cstrPath _
& Replace(cstrOldMask, "%cd%", fdCd.Value)
strNewPathName = cstrPath _
& cstrNewMask
strNewPathName = Replace(strNewPathName, "%cd%", fdCd.Value)
strNewPathName = Replace(strNewPathName, "%id%", CStr(fdId.Value))
Debug.Print strOldPathName
Debug.Print strNewPathName
Debug.Print
If Len(Dir(strOldPathName)) Then
Name strOldPathName As strNewPathName
Else
Debug.Print "IL FILE NON ESISTE!"
End If
.MoveNext
Loop
End If
End With

On Error Resume Next
rs.Close
Set fdCd = Nothing
Set fdId = Nothing
Set rs = Nothing
Set db = Nothing
End Sub
--
Ciao!
Maurizio
Alfio
2015-03-09 12:04:27 UTC
Permalink
Post by Alfio
Buongiorno a tutti, potreste indicarmi un metodo per eliminare dal nome del file tutto ciò che si trova alla fine prima dell'estensione racchiuso tra patentesi? Esempio "nomefile (xxxxx).ext" devo eliminare quello che c'è in parentesi, parentesi comprese.
Grazie
Alfio
Non funge...
Non dà nemmeno errori
Ho messo uno stop dopo la valorizzazione della variabile sql per controllare le variabili, tutte valorizzate tranne sql che resta vuota.

Alfio
Alfio
2015-03-09 12:06:47 UTC
Permalink
Post by Alfio
Post by Alfio
Buongiorno a tutti, potreste indicarmi un metodo per eliminare dal nome del file tutto ciò che si trova alla fine prima dell'estensione racchiuso tra patentesi? Esempio "nomefile (xxxxx).ext" devo eliminare quello che c'è in parentesi, parentesi comprese.
Grazie
Alfio
Non funge...
Non dà nemmeno errori
Ho messo uno stop dopo la valorizzazione della variabile sql per controllare le variabili, tutte valorizzate tranne sql che resta vuota.
Alfio
Scusa, ho scritto una sciocchezza.
Comunque non va, sto controllando le variabili.
Alfio
2015-03-09 13:45:09 UTC
Permalink
Maurizio sei un grande!!!

Posso non aggiungere altro?
Ha funzionato tutto al primo colpo (non so cosa gli era preso all'inizio).
F A N T A S T I C O

Grazie 1.000.000.000

Alfio
Maurizio Borrelli
2015-03-09 16:12:04 UTC
Permalink
Post by Alfio
Maurizio sei un grande!!!
Posso non aggiungere altro?
Ha funzionato tutto al primo colpo (non so cosa gli era preso all'inizio).
F A N T A S T I C O
Grazie 1.000.000.000
Ciao Alfio.

Son contento. Grazie per il dovizioso riscontro.
--
Ciao!
Maurizio
Alfio
2015-04-09 19:39:59 UTC
Permalink
Post by Maurizio Borrelli
Son contento. Grazie per il dovizioso riscontro.
Ciao Maurizio, oggi son tornato ad utilizzare la routine..che dire, non finirò mai di ringraziarti, circa 16.000 immagini rinominate e pronte ad essere usate, che sballo!!!

Grazie ancora.

Alfio

PS: di dove sei?
Maurizio Borrelli
2015-04-10 07:52:07 UTC
Permalink
Il giorno giovedì 9 aprile 2015 21:39:59 UTC+2, Alfio ha scritto:
[...]
Post by Alfio
oggi son tornato ad utilizzare la routine..che dire, non finirò mai di ringraziarti, circa 16.000 immagini rinominate e pronte ad essere usate, che sballo!!!
Grazie ancora.
Ciao Alfio,
grazie, mi fa molto piacere. :)
Alla prossima.
--
Ciao! :)
Maurizio
Loading...