mercoledì 25 maggio 2016 di Michele Nasi 7150 Letture

Come rinominare una serie di file con Powershell

L'esigenza di dover rinominare gruppi di file è piuttosto frequente. Spesso può essere necessario eliminare del testo presente nel nome di una serie di file oppure aggiungere un prefisso o un suffisso.

Per rinominare una serie di file sono oggi disponibili diversi strumenti software ma perché installare un programma apposito se Windows già integra tutto il necessario per procedere?

Nell'articolo Rinominare file e cartelle in Windows senza usare altri software abbiamo visto com'è possibile cambiare il nome ad una serie di file assegnando la stessa denominazione di base e un numero progressivo.

In calce all'articolo, tuttavia, abbiamo spiegato come venire incontro alle esigenze più particolari. Torniamo sull'argomento focalizzando la nostra attenzione, questa volta, esclusivamente su Powershell.


PowerShell è una shell caratterizzata da un'interfaccia a riga di comando e da un versatile linguaggio di scripting che permette di eseguire ogni genere di operazione, anche quelle apparentemente più complesse.

Come avviare PowerShell

Per accedere alla riga di comando più evoluta di Microsoft, è sufficiente digitare powershell nella casella di ricerca di Windows quindi scegliere Windows Powershell.

Come rinominare una serie di file con Powershell

Per rinominare gruppi di file non sono di norma necessari i diritti di amministrazione; se tuttavia si stesse operando su file altrui (ad esempio quelli memorizzati nelle cartelle di un altro account utente) bisognerà necessariamente avviare ed usare Powershell assegnandogli i privilegi maggiori.


Per procedere, basterà cliccare con il tasto destro del mouse su Windows Powershell e scegliere Esegui come amministratore.

Rinominare una serie di file rimuovendo alcuni caratteri

Prima di iniziare a lavorare con Powershell, suggeriamo di creare una copia di backup dei file che saranno rinominati. Nel caso in cui si dovessero commettere errori, si potranno così agevolmente ripristinare le copie originali dei file, coi nomi iniziali.

Dalla finestra di Powershell, usando il comando cd ci si potrà portare nella cartella contenente i file da rinominare (esempio: cd C:\Users\Michele\Documents\test).

Per rinominare una serie di file sostituendo un carattere o una sequenza di caratteri, si potrà quindi digitare quanto segue:

dir rename-item -newname { $_.name -replace "stringa_da_cercare","stringa da sostituire" }

Come rinominare una serie di file con Powershell

Nell'esempio in figura, rimuoviamo la stringa Diapositiva1 dai nomi di tutti i file presenti nella cartella corrente.

L'istruzione seguente, invece, permette di rinominare - effettuando la sostituzione specificata - solo quei file che contengono il termine indicato in qualunque parte del nome:

Get-ChildItem -Filter "*termine*" -Recurse rename-item -newname { $_.name -replace "stringa_da_cercare","stringa da sostituire" }

Esempio:
Get-ChildItem -Filter "*sesamo*" -Recurse rename-item -newname { $_.name -replace "TEST_","OK_" }
Sostituisce la stringa TEST_ con OK_ solo per quei file che - in qualunque parte del loro nome - contengono il termine "sesamo".


Aggiungere un prefisso o un suffisso al nome dei file

Se si volesse invece rinominare una serie di file e aggiungervi un prefisso, basterà digitare quanto segue:

dir Rename-Item -NewName {"PREFISSO_" + $_.Name}

Nel caso in cui si volesse aggiungere invece un suffisso basterà, banalmente, usare:

dir Rename-Item -NewName {$_.Name + "_SUFFISSO"}

Si possono anche combinare altre informazioni. Ad esempio, l'istruzione che segue cosnente di aggiungere come prefisso il nome della cartella a quello di tutti i file in essa memorizzati:

dir Rename-Item -NewName {$_.Directory.Name + "_" + $_.Name}

Cambiare l'estensione di un insieme di file

Analogamente, per rinominare un insieme di file modificandone l'estensione, si potrà usare quanto segue:

Get-ChildItem *.txt rename-item -newname { $_.name -replace '\.txt','.log' }

In questo caso, tutti i file con estensione .txt verranno automaticamente rinominati ricorrendo all'estensione .log.

È interessante evidenziare che dalla finestra di Powershell è comunque possibile usare tutti i comandi che si è abituati ad usare dal prompt.
Per chiudere la finestra di Powershell, basta digitare il comando exit.


  1. Avatar
    Sampei Nihira
    25/05/2016 18:18:50
    Già che siamo in argomento.... Avete fatto caso che in pc x64 ci sono 4 exe Powershell ? Vado avanti. In Powershell il comando: Get-ExecutionPolicy restituisce la voce "Unrestricted" in Powershell (x86) lo stesso comando restituisce "Restricted" Un quadro completo si ha inserendo il valore -list al comando sopra.