Remove-Item în PowerShell

Fișiere și foldere Windows PowerShell 1.0

Șterge fișiere și foldere (și alte elemente, ca chei de registry); ștergerea este definitivă, nu în Coșul de reciclare.

Sintaxă
Remove-Item [-Path] <string[]> [-Recurse] [-Force] [-Include <string[]>] [-Exclude <string[]>] [-WhatIf] [-Confirm]

Ce face Remove-Item

Remove-Item șterge elementele indicate: fișiere, foldere, dar și chei de registry, variabile sau funcții, pentru că lucrează cu orice provider. Fișierele șterse nu ajung în Coșul de reciclare, așa că verifică înainte ce urmează să dispară.

Un folder cu conținut se șterge cu -Recurse; fără el, PowerShell îți cere confirmare (iar -Confirm:$false nu oprește această întrebare). -Force este necesar pentru fișiere ascunse sau doar pentru citire.

-WhatIf afișează ce s-ar șterge fără să șteargă nimic, iar -Confirm te întreabă pentru fiecare element. Aliasuri: del, erase, rd și ri pe toate sistemele, rm și rmdir doar pe Windows.

Parametri

Parametru Descriere
-Path Elementele de șters; acceptă wildcard-uri (C:\Proiecte\temp\*.tmp) și intrare din pipeline.
-Recurse Șterge folderul cu tot conținutul lui.
-Force Șterge și elemente ascunse sau doar pentru citire.
-Include / -Exclude Filtrează elementele găsite de -Path (cer * la finalul căii).
-LiteralPath Calea folosită exact cum e scrisă (pentru nume cu [ ]).
-WhatIf Arată ce s-ar șterge, fără să șteargă.
-Confirm Cere confirmare înainte de fiecare ștergere.

Ce returnează

Nimic.

Exemple

Exemplul 1: Verifică ce s-ar șterge cu -WhatIf

Nicio ștergere nu are loc; vezi doar lista fișierelor care s-ar potrivi.

Remove-Item -Path C:\Proiecte\temp\*.tmp -WhatIf

Ieșire în terminal

What if: Performing the operation "Remove File" on target "C:\Proiecte\temp\export-ana.tmp".
What if: Performing the operation "Remove File" on target "C:\Proiecte\temp\export-mihai.tmp".

Exemplul 2: Șterge un folder cu tot conținutul

-Recurse șterge și subfolderele, -Force include fișierele ascunse. Comanda nu afișează nimic.

Remove-Item -Path C:\Proiecte\arhiva-2020 -Recurse -Force

Exemplul 3: Cere confirmare înainte de ștergere

Cu -Confirm, PowerShell întreabă; răspunsul N anulează ștergerea.

Remove-Item -Path .\buget-vechi.xlsx -Confirm

Ieșire în terminal

Confirm
Are you sure you want to perform this action?
Performing the operation "Remove File" on target "C:\Proiecte\buget-vechi.xlsx".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): N

Greșeli frecvente

  • Remove-Item -Path .\* -Include *.csv -Recurse nu se comportă mereu cum te aștepți, iar -Exclude cu -Recurse filtrează doar primul nivel. Pentru ștergeri recursive selective, găsește întâi fișierele: Get-ChildItem -Recurse -Filter *.csv | Remove-Item -WhatIf, apoi rulează fără -WhatIf.
  • Numele cu paranteze drepte (factura[1].pdf) nu se potrivesc în -Path, pentru că [ ] sunt wildcard-uri. Folosește -LiteralPath.
  • Pe macOS și Linux, rm rulează comanda nativă, nu Remove-Item: rm -Recurse nu există acolo (rm -r da). În scripturi portabile scrie numele complet.
  • O variabilă goală într-o cale (Remove-Item "$dosar\*" -Recurse cu $dosar nesetat) devine \*, adică rădăcina unității curente. Verifică variabila înainte și testează cu -WhatIf.

Comenzi înrudite

  • Get-ChildItem: Listează fișierele și folderele dintr-o locație, opțional recursiv, filtrate după nume sau tip (echivalentul lui dir și ls).
  • Test-Path: Verifică dacă o cale există și întoarce True sau False; poate cere să fie fișier sau folder și să fie mai nouă decât o dată.
  • Copy-Item: Copiază fișiere și foldere în altă locație, opțional cu tot conținutul subfolderelor și cu nume nou.
  • Move-Item: Mută fișiere și foldere în altă locație, opțional cu nume nou; elementul dispare din locul inițial.
  • Where-Object: Filtrează obiectele din pipeline și le lasă să treacă doar pe cele care îndeplinesc o condiție.