폴더의 여러 파일 이름 변경, 접두사 추가 (Windows)


81

폴더의 파일 이름을 새 이름에 접두사로 묶어 일괄 적으로 이름을 바꾸고 싶습니다. 즉,의 파일 C:\house chores\은 모두 이름이 변경 house chores - $old_name됩니다.

답변:


146

옵션 1 : Windows PowerShell 사용

창 메뉴를 엽니 다. "PowerShell"을 입력하고 'Windows PowerShell'명령 창을 엽니 다.

원하는 파일이있는 폴더로 이동 : 예 : cd "C : \ house chores"주의 : 공백이 포함 된 경우 주소에는 따옴표 ""가 포함되어야합니다.

'dir'을 사용하여 폴더의 모든 파일을 볼 수 있습니다. '|'사용 다음 명령에 대해 'dir'의 출력을 파이프 라인합니다.

참고 : 'dir'은 'Get-ChildItem'의 별칭입니다. 참조 : wiki : cmdlets . 추가 기능을 제공 할 수 있습니다. 예를 들어 'dir -recurse'는 모든 파일, 폴더 및 하위 폴더를 출력합니다.

특정 범위의 파일 만 원하는 경우 어떻게합니까?

'dir |'대신 다음을 사용할 수 있습니다.

dir | where-object -filterscript {($_.Name -ge 'DSC_20') -and ($_.Name -le 'DSC_31')} |

디렉토리 이름을 접두사로 사용하여 배치 이름을 변경하는 경우 :

dir | Rename-Item -NewName {$_.Directory.Name + " - " + $_.Name}

옵션 2 : 명령 프롬프트 사용

폴더에서 Shift + 오른쪽 클릭 : '여기에서 명령 창 열기'를 선택합니다.

for %a in (*.*) do ren "%a" "prefix - %a"

파일이 많은 경우이 앞에 '@echo off'명령을 추가하고 끝에 'echo on'명령을 추가하는 것이 좋습니다.


1
Minor nitpick : @in @echo on이 필요하지 않습니다. 당신은 방금 돌아 왔습니다 @echo off.
IInspectable 2014 년

9
옵션 2 (누락 된를 추가 한 후 do)는 작동하지 않습니다. 일부 파일의 이름이 변경된 후 파일 for이름 길이 제한에 도달 할 때까지 접두사를 반복해서 추가하여 새 이름 으로 파일을 찾습니다.
Sergey Vlasov

2
옵션 2를 사용할 때 ren was unexpected at this time.이유를 알 수 있습니까?
널 포인터

4
@billgates do그의 대답에 단어 가 없습니다. 그것은해야for %a in (.) do ren "%a" "prefix - %a"
크리스티안 Westerbeek

2
@SergeyVlasov 두 옵션 모두에서 발생합니다. 이를 피하는 유일한 방법은 이름을 변경하여 원본 위에 배치하는 것입니다. 또는 이름을 바꾼 후 다른 폴더로 이동할 수도 있습니다.
David Starkey

41

여기서 두 가지 Powershell 답변의 문제점은 이름 변경 프로세스가 실행될 때 재 지정되는 디렉토리에 따라 스크립트가 이름이 변경되기 전과 후에 파일에 대해 잠재적으로 실행되기 때문에 접두사가 중복 될 수 있다는 것입니다. 이 문제를 해결하려면 다음 -Exclude옵션을 사용하십시오 .

Get-ChildItem -Exclude "house chores-*" | rename-item -NewName { "house chores-" + $_.Name }

이렇게하면 프로세스가 한 파일의 이름을 두 번 이상 바꾸는 것을 방지 할 수 있습니다.


1
_ $을 포함하여 제안 덜 구체적인 예에 추가하는 것을 고려하십시오 Directory.Name를.
ofer.sheffer

18

자유 소프트웨어 ' Bulk Rename Utility '도 잘 작동합니다 (고급 작업에도 강력합니다). 다운로드 및 설치는 1 분 정도 걸립니다.

원본 웹 사이트에서 스크린 샷튜토리얼 을 참조하십시오 .

-

이미지가 크리에이티브 커먼즈 라이선스에 따라 릴리스되어야하기 때문에 단계별 스크린 샷을 제공 할 수 없으며 소프트웨어의 스크린 샷을 소유하지 않습니다.

면책 조항 : 나는 어떤 식 으로든 상기 소프트웨어 / 회사와 관련이 없습니다. 나는 내 자신의 작업에 대한 제품을 좋아했고 OP와 유사한 요구 사항을 제공하므로 권장합니다.


어느 시점에서 직접 사용하기 시작했습니다. 대화 목록에 무언가를 추가하려면 +1합니다.
ofer.sheffer

@ ofer.sheffer 감사합니다.

이 답변은 주제가 아닙니다! -1
Marco Demaio 15.01.15

1
@MarcoDemaio 피드백 주셔서 감사합니다. OP는 작업을 완료하기를 원하며 연결된 소프트웨어를 통해 쉽게 수행 할 수 있습니다. 나는 솔루션의 복잡성이 더 관련성이 있다고 생각하지 않습니다.

@GopalAggarwal : 죄송합니다. "폴더에있는 파일의 이름을 일괄 적으로 바꾸고 싶습니다"라는 질문을 읽고 그가 Windows 배치 파일을 찾고 있다고 생각했습니다. -1을 제거했습니다.
Marco Demaio 2015 년

9

이것은 나를 위해 일했습니다. 먼저 파일 이름을 변경하려는 디렉토리에서 cd하고 다음 명령을 실행하십시오.

Get-ChildItem | rename-item -NewName { "house chores-" + $_.Name }

5
이로 인해 파일 이름이 Windows 제한에 도달 할 때까지 무한 루프가 발생합니다. 대신 @ Dave.Gugg의 응답을 사용하십시오. stackoverflow.com/a/37279979/2179408
Rob Bell

7

일부 항목의 경우 이름이 변경된 항목의 이름이 다시 변경되기 때문에 머리카락을 찢었습니다 (최대 파일 이름 길이에 도달하지 않는 한 반복적으로). 이것은 Get-ChildItem과 dir의 출력을 파이프하는 데 모두 발생했습니다. 알파벳 순서의 변경으로 인해 이름이 바뀐 파일이 선택되었다고 생각합니다. 이 문제를 다음과 같은 방법으로 해결했습니다.

Get-ChildItem -Path . -OutVariable dirs
foreach ($i in $dirs) { Rename-Item $i.name ("<MY_PREFIX>"+$i.name) }

이렇게하면 $ dirs 변수에서 Get-ChildItem이 반환 한 결과가 "잠기고"순서가 변경되거나 다른 재미있는 비즈니스가 발생할 것이라는 두려움없이이를 반복 할 수 있습니다.

-Exclude 사용에 대한 Dave.Gugg의 팁도이 문제를 해결해야하지만 이것은 다른 접근 방식입니다. 이름을 바꾸는 파일에 이미 접두사에 사용 된 패턴이 포함되어있는 경우 일 수 있습니다.

(면책 조항 : 저는 PowerShell n00b입니다.)


2

@ ofer.sheffer 응답을 기반으로이 명령은 이름을 대량으로 바꾸고 현재 날짜 를 파일 이름에 추가합니다 . 즉, "file.txt"는 현재 폴더의 모든 파일에 대해 "20180329-file.txt"가됩니다.

for %a in (*.*) do ren "%a" "%date:~-4,4%%date:~-7,2%%date:~-10,2% - %a"

2

@ ofer.sheffer 답변에 따르면 이것은 접사를 추가하는 CMD 변형입니다 (질문은 아니지만 접미사를 검색하면이 페이지는 여전히 # 1 Google 결과 임). 확장 때문에 약간 다릅니다.

for %a in (*.*) do ren "%~a" "%~na-affix%~xa"

"-affix"부분을 변경할 수 있습니다.


0

나는 그것이 오래된 질문이라는 것을 알고 있지만 다양한 답변에서 많은 것을 배웠지 만 기능으로 내 자신의 솔루션을 생각해 냈습니다. 특정 패턴과 일치하는 모든 파일에 대한 접두사로 상위 폴더를 동적으로 추가해야하지만 해당 접두사가 아직없는 경우에만 해당됩니다.

function Add-DirectoryPrefix($pattern) {
    # To debug, replace the Rename-Item with Select-Object
    Get-ChildItem -Path .\* -Filter $pattern -Recurse | 
        Where-Object {$_.Name -notlike ($_.Directory.Name + '*')} | 
        Rename-Item -NewName {$_.Directory.Name + '-' + $_.Name}
        # Select-Object -Property Directory,Name,@{Name = 'NewName'; Expression= {$_.Directory.Name + '-' + $_.Name}}
}

https://gist.github.com/kmpm/4f94e46e569ae0a4e688581231fa9e00

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.