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

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



답변

옵션 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’명령을 추가하는 것이 좋습니다.


답변

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

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

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


답변

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

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

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

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


답변

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

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


답변

일부 항목의 경우 이름이 변경된 항목의 이름이 다시 변경되기 때문에 머리카락을 찢었습니다 (최대 파일 이름 길이에 도달하지 않는 한 반복적으로). 이것은 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입니다.)


답변

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

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


답변

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

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

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