tool renamer portable files batch regex powershell

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.

http://gskinner.com/RegExr/

http://www.rubular.com/

y la trampa

http://krijnhoetmer.nl/stuff/regex/cheat-sheet/


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 ''_+'', '' ''