programing

Regex / Powershell을 사용하여 파일 이름 변경

codeshow 2023. 9. 9. 10:22
반응형

Regex / Powershell을 사용하여 파일 이름 변경

다음 파일의 이름을 어떻게 바꿉니다(새 = > 이전).

파일 이름__가속됨_C____실용_프로그래밍_by_Example.chm -> C 예제별 실용 프로그래밍

파일명__Python_Essential_Reference__2nd_Edition_.pdf -> Python Essential Reference 2nd Edition.pdf

파일명__Text_Processing_in_Python.chm -> Python.chm에서 Text Processing

이것을 시도해 보십시오.

Get-ChildItem directory `
        | Rename-Item -NewName { $_.Name -replace '^filename_+','' -replace '_+',' ' }

참고로 객체에 파이프를 대는 것입니다.Rename-Item, 그것은 그것을 하기 위해 꼭 필요한 것이 아닙니다.Foreach-Object(예:%).

갱신하다

저는 대본 블록이 있는 '마법'에 대해 기록된 것이 없습니다.내 기억이 맞다면, 그 부동산이 다음과 같다면 사용될 수 있습니다.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 }

작동해야 합니다.

ls | %{ ren $_ $(($_.name -replace '^filename_+','') -replace '_+',' ') }

별칭을 확장하고 모든 인수의 이름을 지정하면 더 장황하지만 거의 틀림없이 더 이해할 수 있는 버전에 대해 다음과 같습니다.

Get-ChildItem -Path . | ForEach-Object { Rename-Item -Path $_ -NewName $(($_.Name -replace '^filename_+','') -replace '_+',' ') }

이것을 시도해 보십시오.

$filename = $filename -creplace '_+\.', '.'
$filename = $filename -creplace '_+', ' '

언급URL : https://stackoverflow.com/questions/5574648/use-regex-powershell-to-rename-files

반응형