Rename-Item în PowerShell

Fișiere și foldere Windows PowerShell 1.0

Schimbă numele unui fișier sau folder, fără să-l mute; poate redenumi mai multe fișiere cu un script block.

Sintaxă
Rename-Item [-Path] <string> [-NewName] <string> [-Force] [-PassThru]

Ce face Rename-Item

Rename-Item schimbă doar numele unui element; conținutul și locația rămân aceleași. -NewName primește doar un nume, nu o cale: dacă vrei să muți și să redenumești în același timp, folosește Move-Item.

Pentru redenumiri în masă, trimite fișierele prin pipeline și dă lui -NewName un script block, în care $_ este fișierul curent. De exemplu, { $_.Name -replace '\.txt$', '.log' } schimbă extensia; -replace folosește expresii regulate și nu ține cont de majuscule.

Comanda nu poate înlocui un fișier existent cu numele nou, nici cu -Force (acolo -Force servește doar la fișiere ascunse sau doar pentru citire). Aliasuri: ren și rni.

Parametri

Parametru Descriere
-Path Elementul de redenumit; poate veni din pipeline.
-NewName Numele nou (fără cale). Poate fi un script block evaluat pentru fiecare element din pipeline.
-Force Redenumește și elemente ascunse sau doar pentru citire.
-LiteralPath Calea folosită exact cum e scrisă, fără wildcard-uri.
-PassThru Întoarce elementul redenumit.
-WhatIf / -Confirm Arată redenumirea fără s-o facă, respectiv cere confirmare.

Ce returnează

Nimic implicit; cu -PassThru, obiectul redenumit.

Exemple

Exemplul 1: Redenumește un fișier

note.txt devine note-2026.txt în același folder.

Rename-Item -Path C:\Proiecte\note.txt -NewName note-2026.txt

Exemplul 2: Schimbă extensia mai multor fișiere

Script block-ul calculează numele nou pentru fiecare fișier. \.txt$ potrivește doar extensia de la final.

Get-ChildItem -Path C:\Proiecte\jurnale -Filter *.txt |
    Rename-Item -NewName { $_.Name -replace '\.txt$', '.log' }
Get-ChildItem -Path C:\Proiecte\jurnale -Name

Ieșire în terminal

iasi-luni.log
iasi-marti.log
iasi-miercuri.log

Exemplul 3: Adaugă un prefix la poze

Fiecare fișier .jpg primește prefixul Cluj- în fața numelui existent.

Get-ChildItem -Path C:\Poze -Filter *.jpg |
    Rename-Item -NewName { 'Cluj-' + $_.Name }
Get-ChildItem -Path C:\Poze -Name

Ieșire în terminal

Cluj-catedrala.jpg
Cluj-piata-unirii.jpg

Greșeli frecvente

  • Rename-Item .\proiect.txt -NewName D:\arhiva\proiect.txt dă eroare: -NewName acceptă doar un nume. Pentru mutare cu redenumire, folosește Move-Item.
  • În -replace '.txt', '.log', punctul înseamnă „orice caracter” în regex, așa că s-ar potrivi și „atxt” în mijlocul numelui. Scrie '\.txt$'.
  • Dacă numele nou există deja în folder, redenumirea eșuează. Pentru a înlocui fișierul existent, folosește Move-Item -Force.

Comenzi înrudite

  • Move-Item: Mută fișiere și foldere în altă locație, opțional cu nume nou; elementul dispare din locul inițial.
  • Get-ChildItem: Listează fișierele și folderele dintr-o locație, opțional recursiv, filtrate după nume sau tip (echivalentul lui dir și ls).
  • ForEach-Object: Rulează un bloc de cod pentru fiecare obiect din pipeline; din PowerShell 7.0 poate rula blocurile în paralel cu -Parallel.
  • Operatori de comparație: PowerShell compară cu -eq, -ne, -gt, -lt, -like, -match, -contains, -in, nu cu = sau >; implicit nu ține cont de majuscule.