Az átnevezés elég magától értetődő. Korábban láttuk, hogy akár másolás során is át tudjuk nevezni a fájlokat, mappákat, de természetesen anélkül is megy ez a Rename-Item cmdlettel:
PS C:\> Rename-Item -Path 'C:\PSKönyv\Normál fájl.txt' -NewName "Új név.txt"
Itt sincs alaphelyzetben semmi kimenet, de a –PassThru kapcsolóval bekapcsolható:
PS C:\> Rename-Item -Path 'C:\PSKönyv\Új név.txt' -NewName "Mégújabb.txt" -Pass
Thru
Directory: C:\PSKönyv
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2014.06.30. 20:49 0 Mégújabb.txt
Érdekes lehetőség, hogy ha a csővezetékből tápláljuk be a Rename-Item-et, akkor –NewName paraméternek szabályt is adhatunk:
PS C:\> Get-Item -Path 'C:\PSKönyv\Archivált fájl.txt' | Rename-Item -NewName {
$_.basename + (get-date $_.lastwritetime -Format yyyyMMdd) + $_.extension} -Pas
sThru
Directory: C:\PSKönyv
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2014.06.30. 20:50 0 Archivált fájl20140630.txt
Megjegyzés
Érdekes és szerintem egyedi a –NewName ilyen jellegű működése. A help alapján sztringet kellene csak elfogadnia ennek a paraméternek, de itt szkriptblokkot adunk neki és nem panaszkodik. Ha ugyanezt próbálnánk az Add-Member-rel eljátszani, az nem menne:
PS C:\> New-Object -TypeName psobject -Property @{a="A"; b="B"} | Add-Member -M
emberType NoteProperty -Name c -Value {$_.a + $_.b} -PassThru
a b c
- - -
A B $_.a + $_.b
Amint látható, a –Value paraméternek hiába adtam egy szkriptblokkot, azt az Add-Member szöveggé konvertálta.