regex - renamer - rename file massive
Use Regex/Powershell para cambiar el nombre de los archivos (3)
Estoy aprendiendo Regex, pero no sé cómo cambiar el nombre de los siguientes archivos a los que quiero todavía. Me puedes ayudar.
Por cierto, creo que es muy útil usar Powershell para cambiar el nombre de los archivos, y puede aceptar Regex.
filename__Accelerated_C ____ Practical_Programming_by_Example.chm -> C Practical Programming by Example.chm
filename__Python_Essential_Reference__2nd_Edition_.pdf -> Python Essential Reference 2nd Edition.pdf
filename__Text_Processing_in_Python.chm -> Text Processing en Python.chm
También estoy incluyendo algunas herramientas gratuitas de Regex en línea que disfruto más, que pueden ser útiles para otros.
y la trampa
Esto debería funcionar:
ls | %{ ren $_ $(($_.name -replace ''^filename_+'','''') -replace ''_+'','' '') }
Prueba este:
Get-ChildItem directory | Rename-Item -NewName { $_.Name -replace ''^filename_+'','''' -replace ''_+'','' '' }
Tenga en cuenta que simplemente canalizo los objetos a Rename-Item
, realmente no es necesario hacerlo a través de Foreach-Object
(alias es %
).
Actualizar
No he documentado nada acerca de la ''magia'' con scriptblocks. Si ValueFromPipelineByPropertyName=$true
no recuerdo, se puede usar si la propiedad es ValueFromPipelineByPropertyName=$true
:
function x{
param(
[Parameter(ValueFromPipeline=$true)]$o,
[Parameter(ValueFromPipelineByPropertyName=$true)][string]$prefix)
process {
write-host $prefix $o
}
}
gci d:/ | select -fir 10 | x -prefix { $_.LastWriteTime }
Probar esto:
$filename = $filename -creplace ''_+/.'', ''.''
$filename = $filename -creplace ''_+'', '' ''