Rinominare più file tramite PowerShell

Oltre 2000 file da rinominare…

Da diverse settimane sto aggiornando le gallerie fotografiche di questo sito, e mi trovo ad affrontare numerosi file conservati nel corso degli anni. Nel corso del tempo infatti ho usato diversi metodi di “archiviazione”, alcuni piuttosto spartani e poco adatti ad un import online. Come vedete nell’immagine al lato, ci sono diverse foto salvate con un prefisso (l’anno dello scatto) compreso tra due parentesi quadre. Non il massimo della praticità, insomma.

Si tratta di oltre 2000 immagini, e sinceramente non mi va proprio di spendere un pomeriggio a rinominarle una per una. E non ho neanche voglia di mettermi a cercare qualche programmino da scaricare. Pur non avendo a disposizione il mio caro e vecchio terminale, posso usare uno strumento decisamente simile: Windows PowerShell. Con due semplici comandi infatti ho aggirato il problema in pochi minuti.

Avviamo PowerShell e spostiamoci nella cartella dove vogliamo effettuare la modifica (il comando è sempre cd). Assicuriamoci che non ci siano altri file, perchè questi comandi interesseranno tutto il contenuto della directory (anche altre cartelle). Il mio primo istinto è quello di “normalizzare” il nome di file sostituendo ogni spazio con un trattino basso, il minimo per dei file che andranno a finire online. Quindi, inizio con questo:

dir | rename-item -newname { $_.name -replace " ","_" }

Come avrete capito, l’opzione “rename-item” va a cambiare il nome di tutti i file nella directory attraverso un cambio di caratteri. Nel mio caso, ho specificato che gli ” ”  (lo spazio) vengano sostituiti con i “_” (i trattini bassi). In pochi secondi, tutti i file sono stati aggiornati.

Si passa quindi alla domanda più difficile: come elimino da tutti questi file il prefisso? Non trattandosi di una sostituzione o di una modifica, nel mio caso posso pensare di eliminare tot. caratteri dall’inizio del nome di ogni file. Essendo il prefisso uguale per ogni file, mi basta sapere quanti caratteri occupa per poterlo rimuovere agevolmente. Quindi, vado con questo:

dir | rename-item -newname { [string]($_.name).substring(7) }

Un comando un po’ più complesso ma altrettando semplice. Nel mio caso, il prefisso è composto da 7 caratteri (l’anno tra parentesi quadre più il trattino basso), quindi sempre con l’opzione “rename-item” procedo questa volta alla cancellazione dei primi sette caratteri dalla stringa (in questo caso, dal nome dei file). Pochi secondi ed il gioco è fatto.

Se con l’eliminazione del prefisso alcuni file avranno lo stesso nome questi non verranno modificati, quindi dovrete rinominarli manualmente (oppure spostare le foto già rinominate in un’altra cartella e lanciare di nuovo il comando 😉 ). In questo modo, ho rinominato oltre 2000 file in poco meno di 2 minuti, e sono pronti per finire nella nuova area Gallerie del sito.

Un po’ di fantasia e questi due comandi si adatteranno anche alla vostra situazione.