폴더의 파일 이름을 새 이름에 접두사로 묶어 일괄 적으로 이름을 바꾸고 싶습니다. 즉,의 파일 C:\house chores\
은 모두 이름이 변경 house chores - $old_name
됩니다.
폴더의 파일 이름을 새 이름에 접두사로 묶어 일괄 적으로 이름을 바꾸고 싶습니다. 즉,의 파일 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'명령을 추가하는 것이 좋습니다.
do
)는 작동하지 않습니다. 일부 파일의 이름이 변경된 후 파일 for
이름 길이 제한에 도달 할 때까지 접두사를 반복해서 추가하여 새 이름 으로 파일을 찾습니다.
ren was unexpected at this time.
이유를 알 수 있습니까?
do
그의 대답에 단어 가 없습니다. 그것은해야for %a in (.) do ren "%a" "prefix - %a"
여기서 두 가지 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입니다.)
나는 그것이 오래된 질문이라는 것을 알고 있지만 다양한 답변에서 많은 것을 배웠지 만 기능으로 내 자신의 솔루션을 생각해 냈습니다. 특정 패턴과 일치하는 모든 파일에 대한 접두사로 상위 폴더를 동적으로 추가해야하지만 해당 접두사가 아직없는 경우에만 해당됩니다.
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
@
in@echo on
이 필요하지 않습니다. 당신은 방금 돌아 왔습니다@echo off
.