파일을 대량으로 이름을 바꾸려면 어떻게해야합니까?


126

패턴으로 명명 된 많은 파일 99 - DescriptiveName.txt이 있고 앞면에서 숫자를 제거하고 싶습니다 DescriptiveName.txt.

어떻게해야합니까? 명령 줄에서 수행 할 수 있습니까? 아니면이를 수행 할 수있는 유틸리티가 있습니까?

답변:


94

나는 당신의 제목에서 당신이 "해야 할 일"이라고 말하지만 당신이 이것을 할 수있는 방법을 찾고 있다는 것이 가장 좋은 방법인지 궁금합니다.

내가 찾은 최고의 도구는 Bulk Rename Utility 입니다.

대량 이름 바꾸기 유틸리티

명령 행 도구는 아니지만 실제로 사용하려는 경우 명령 행 버전 이 있습니다.

GUI 버전을 많이 사용했으며 매우 강력하고 빠르며 사용하기 쉽습니다.

아, 개인적 으로 무료 입니다.


불행히도이 도구는 상업적으로 무료로 사용할 수 없습니다 :(
AntonK

그렇기 때문에 개인 용도로는 무료라고 말했습니다.
Jim McKeeth

2
이것은 매우 빠른 도구입니다. 몇 가지 검색 및 교체 논리를 사용하여 몇 초 만에 6.000 파일 문제를 해결했습니다. 메모장 ++을 사용하지만 수천 개의 파일을 편집하는 것과 같습니다. 훌륭한 솔루션, 감사합니다!
땅콩

59

작은 PowerShell 스크립트 :

$args | Rename-Item -NewName { $_.Name.ToLower() -replace '\d+ - ' }

보다 복잡한 정규식과 결합하면 다음과 같이 될 수 있습니다.

ls | Rename-Item -NewName {$_ -replace '(\d+) - (.*).mp3', '$2 - $1.mp3' }

'01-Beginning.mp3 '과 같은 것을'Beginning-01.mp3 '으로 바꿉니다.

-WhatIf매개 변수 on Rename-Item을 사용하여 이름을 발행하기 전에 이름을 확인하십시오.


1
@sysrqb, 조금 더 연구하십시오.
Joey

바꾸기에는 두 개의 문자열 표현식이 필요하지 않습니까? 두 번째는 두 개를 가지고 있지만 첫 번째는 두 개가 없습니다. ... -replace '\d+ - ',''. 또한 첫 번째 것이 더 좋다고 생각합니다. 정규식을 사용하여 시작 부분을 제거하십시오. 비록 식의 시작 부분에 ^ 앵커를 포함시켜야한다고 믿지만 숫자로 시작하는 이름과 만 일치합니다.
Xalorous

1
@ Xalorous : 글쎄, 당신은 단순히 그것을 시도 할 수 있습니다. -replace오른쪽에 하나의 인수 만 가질 수 있으며,이 경우 두 번째 인수는 암시 적으로 빈 문자열입니다.
Joey

이렇게하면 저를 구할 수 있습니다. Bulk Rename Utility가 방금 중단되어 다른 많은 솔루션을 시도했습니다. 이것은 정규 표현식에 익숙한 사람들에게 더 좋습니다. 정말 고맙습니다 !!
Inkh Su Tesou

24

실제로 Windows 명령 행을 사용하려는 경우 (다운로드하지 않으려는 경우) 다음과 같이 수행 할 수 있습니다.

dir /B > fileList.txt
for /f "tokens=1,2,3" %i in (fileList.txt) DO ren "%i %j %l" %l

첫 번째 줄은 파일 목록을 fileList.txt라는 파일로 출력합니다. 두 번째 줄은 목록의 각 이름을 #, "-"및 나머지 이름의 세 부분으로 구분합니다. 각각에 대해 rename 명령을 수행합니다.


2
단순화하기 위해 첫 번째 줄을 제거하고 다음을 수행하십시오.for /f "tokens=1,2,3" %i in ('dir /B') DO ren "%i %j %l" %l

나는 이것이 오래되었다는 것을 알고 있지만 여전히 확실한 대답입니다. % l (% L) 만 % k (% K)이어야합니다. [토큰은 % i (% I)에서 증가하므로 I, J, K ...]
Donald Byrd

24

AntRenamer를 사용하면 이름 변경 패턴을 쉽게 정의 할 수 있습니다. 이미 준비된 것들이 많이 있습니다 (그리고 작업을 미리 볼 수 있습니다).

개미 이름 바꾸기

개인 및 상업용으로 무료입니다.


19

오래된 학교:

DIR * .TXT> TEMP.BAT와 같이 DIR을 수행하고 출력을 파일로 리디렉션 할 수 있습니다.

그런 다음 편집기를 사용하여 필요없는 부분을 꺼내고 필요한 부분을 수정하십시오. "@echo off"를 맨 위 줄로 추가하고 저장 한 후 실행하십시오.


구식 박사 학위 에서이 페이지 참조를 얻었습니다. dostips.com/DosCommandIndex.htm ; 오래된 DOS로 무엇을 할 수 있는지 놀랍습니다!
nik

16

다른 옵션 : Massive File Renamer

여러 파일과 파일 확장자의 이름 을 쉽게 바꿀있습니다 . 매우 빠르고 간단합니다!

고급 사용자 및 개발자의 경우 정규식 을 사용할 수 있습니다 .

실제로보기 :

여기에 이미지 설명을 입력하십시오


1
Btw 하위 폴더 내의 모든 파일을 열려면 어떻게 선택할 수 있습니까? 대략 50 개의 하위 폴더 (재귀 적으로)와 그 안에 여러 파일이있는 루트 폴더가 있습니다.
Pacerier

1
@Pacerier Java 파일 선택기가 허용하지 않는다고 생각합니다. 폴더를 선택할 수 있다는 아이디어가 있었고 재귀 검색을 포함시킬 수 있습니다. 나는 그것을 주목하고 차기 릴리스에 추가 할 것이다!
IvanRF

13

내가 사용하는 총 사령관 과 같은 것들에 대한의 멀티 이름 바꾸기 도구 (Ctrl + M)을. 계산하기에 너무 많은 도구 중 유용한 도구는 사용하기 쉽고 필요한 경우 정규식과 템플릿을 사용할 수도 있습니다. 아, 그리고 변경하기 전에 분명히 미리보기를 제공합니다.

이것은 총 사령관을 추천하면서 대답 한 세 번째 또는 네 번째 질문입니다 ... 나는 그들로부터 커미션을 받아야합니다 ;-)


11

내가 만족했던 도구는 ReNamer 입니다. 또한 동일한 이름 변경을 여러 번 수행하므로 이름 변경 규칙 저장을 지원합니다.

아래는 첫 번째 대시 전에 텍스트를 삭제하는 방법의 예이지만 정의 할 수있는 다른 규칙이 많이 있습니다.

여기에 이미지 설명을 입력하십시오


5

이를 위해 Free Commander Portable (프리웨어)을 사용했습니다.

  1. 이름을 바꿀 파일 또는 디렉토리를 선택하거나 탐색하십시오.
  2. [Ctrl-M]을 누르십시오 (또는 파일> 다중 이름 바꾸기)
  3. 상황에 맞는 필드를 작성하십시오
  4. 미리보기에 예상 한 내용이 표시되는지 확인
  5. 가다!



3

다음은 명령 줄 솔루션입니다. 파일 이름의 "패턴"으로 쉽게 작업 할 수 있도록 특별히 작성한 Java 프로그램입니다. 무료이며 오픈 소스이므로 자유롭게 수정하십시오.

이름 바꾸기 및
http://renamewand.sourceforge.net/

관련 사용 예 :

"-"파일 이름에서 앞에 모든 것을 삭제 하십시오.

java -jar RenameWand.jar  "<a> - <b>"  "<b>"

파일 이름 앞에 3 자리 숫자를 붙여 마지막으로 수정 한 시간별로 정렬합니다.

java -jar RenameWand.jar  "<a>"  "<3|#FT> <a>"

파일 이름의 일부를 재정렬하고 대소 문자를 변경하십시오.

java -jar RenameWand.jar  "<album> - <artist> - <song>.<ext>" 
                          "<artist.upper> <album.title> - <song>.<ext.lower>"

3

한 달 전에 RenPhoric을 발견 했습니다 . 훌륭한. 그리고 그것은 무료 입니다.

복잡한 인터페이스가 없었으며 원하는대로 신속하게 이름을 바꿀 수있었습니다. 정규식 가능. 그 이후로 다른 것을 사용하지 않았습니다.


2

Cylog의 WildRename을 좋아 합니다. 강력하지만 사용하기 쉽고 많은 기능이 있습니다.

  1. 빠른
  2. 문자열 조작
  3. 카운터
  4. 와일드 카드
  5. 정규식
  6. 치환
  7. 사례 변환
  8. 벌채 반출
  9. 시뮬레이션 (실제로 적용하지 않고 결과 표시)

여기에 이미지 설명을 입력하십시오


2

위의 @zdan과 마찬가지로 명령 줄 (Windows에서 "cmd.exe"사용) 로이 작업을 수행했습니다. 내 특별한 경우에는 약간의 고민이 있었지만 약간의 연구로 해결되었습니다.

zdan처럼, I 출력 TXT 파일의 목록은 다음에 사용 tokens하고 delims그에 따라 파일의 이름을 변경 할 수 있습니다. 필자의 경우 다음과 같은 이름의 파일 목록으로 시작했습니다.

name-01-02-2012.csv

파일 날짜 부분이 y / m / d 순서로되어 있고 끝에 "name"부분이 있으므로 다음과 같이 읽습니다.

2012-01-02-name.csv

이 en-masse를 수행하기 위해 다음 코드를 사용했습니다. 이 방법으로 파일 이름의 ".csv"확장자를 포함한 모든 부분이 고려됩니다. 그것은 처음으로 나를 위태롭게했다.

dir /B > fileList.txt
for /f "tokens=1,2,3,4,5 delims=-." %i in (fileList.txt) DO ren "%i-%j-%k-%l.%m" %l-%j-%k-%i.%m

(가) tokens파일 이름의 "부분"이다는이 delims분리기입니다. 필자의 경우 두 개의 구분 기호 (대시 및 점)가있었습니다.

나는 개인적으로 "대량 이름 변경"앱을 신경 쓰지 않습니다. 다른 사람들이 언급했듯이 GUI는 끔찍하고 직관적이지 않습니다. 약간의 연구와 간단한 코딩으로 이러한 작업을 효율적이고 신속하게 수행 할 수 있습니다.


2

재미있는 이름과 명령 줄 도구는 매우 강력하고 빠르고 매우 사용하기 쉽습니다. "텍스트 찾기 및 바꾸기"FART http://fart-it.sourceforge.net/ WORKS GREAT! txt 파일에서도 단어의 이름을 바꿀 수 있습니다.

용법

Usage: FART [options] [--] <wildcard>[,...] [find_string] [replace_string]

Options:
 -h --help          Show this help message (ignores other options)
 -q --quiet         Suppress output to stdio / stderr
 -V --verbose       Show more information
 -r --recursive     Process sub-folders recursively
 -c --count         Only show filenames, match counts and totals
 -i --ignore-case   Case insensitive text comparison
 -v --invert        Print lines NOT containing the find string
 -n --line-number   Print line number before each line (1-based)
 -w --word          Match whole word (uses C syntax, like grep)
 -f --filename      Find (and replace) filename instead of contents
 -B --binary        Also search (and replace) in binary files (CAUTION)
 -C --c-style       Allow C-style extended characters (\xFF\0\t\n\r\\ etc.)
    --cvs           Skip cvs dirs; execute "cvs edit" before changing files
 -a --adapt         Adapt the case of replace_string to found string
 -b --backup        Make a backup of each changed file
 -p --preview       Do not change the files but print the changes

더 자세한 정보가 있습니까? 그것은 않는 파일의 이름을 변경 ?
vonbrand

예, -f옵션입니다.
user1016274


2
@ 에코 오프
setlocal enabledelayedexpansion
X = 5로 설정
FOLDER_PATH =를 설정하십시오.
% FOLDER_PATH % 푸시
% * f in % * f의 경우 %% f neq % ~ nx0 (
    "filename = %% ~ nf"설정
    "filename =! filename : ~ % X %!"설정
    ren "%% f" "! filename! %% ~ xf"
)
팝

이것을 배치 파일에 저장하고 실행하십시오.


이것은 좋지만 어떻게 X를 변수로 만들 수 있습니까 (매개 변수로 전달)?
Kangkan

@Kangkan이 같은 :set /p "X=Enter the value for X: "
Kidquick

1

저는 칠판을 사용하여 대학에서 과정을 관리합니다. 과제를 대량으로 다운로드하면 (칠판에서 채점 열 상단을 클릭 한 다음 "할당 파일 다운로드") 칠판에 파일 이름에 많은 추가 항목이 추가되어 파일 이름이 너무 길어 Windows에서 유효하지 않게됩니다.

다음은 그들이 어떻게 생겼는지입니다 :

Recitation20Assignment_studentname_attempt_2013-03-01-20-03-09_Exercise28129.docx

그리고 이것은 내가 원하는 것입니다

studentname.docx

따라서 @zdan 및 @ gtr1971에서 권장하는 방법을 사용하여 파일 (CMD.EXE)이있는 폴더에서 명령 창을 열었습니다. 그런 다음이 명령을 실행하여 모든 파일 이름을 문서에 넣으십시오.

dir /b >filelist.txt

문서를 편집하고 폴더 이름 등을 제거하십시오.

Blackboard 추가 파일 이름 항목을 사용자 이름 및 파일 확장자로 바꾸려면이 명령을 사용하십시오.

for /f "tokens=1,2,3,4,5,6 delims=_." %i in (filelist.txt) do ren "%i _%j_%k_%l_%m.%n" %j.%n

이것이 다른 누군가에게도 도움이되기를 바랍니다.



1

정규식 검색을 수행하여 파일 또는 폴더의 이름을 바꾸고 이름을 바꿀 수있는 JREN.BAT라는 하이브리드 JScript / 배치 명령 줄 유틸리티를 개발했습니다 . XP 이후의 모든 Windows 시스템에서 기본적으로 실행되는 순수한 스크립트입니다. 전체 문서가 스크립트 내에 포함되어 있습니다.

JREN.BAT가 현재 디렉토리에 있거나 경로의 어딘가에 있다고 가정하면 이름 바꾸기 작업이 쉽지 않습니다.

jren "^\d+[ -]+(.+)\.txt$" "$1" /i

또는

jren "^\d+[ -]+(?=.+\.)" "" /fm "*.txt"

/S서브 디렉토리에서 재귀 적으로 이름 바꾸기를 수행하는 옵션을 포함하여 많은 옵션이 있습니다 .


0

강력한 힘이 필요하고 돈을 버릴 의향있다면 PowerGrep 은 시장에서 가장 강력하고 다양한 도구 중 하나입니다 . PowerGrep 으로 거의 모든 이름을 바꿀 수 있습니다. 심지어 이진 검색 및 교체 ... RegEx Guru, Jan Goyvaerts에 의해 작성되었습니다 .

여기에 이미지 설명을 입력하십시오


이 유틸리티는
엄청나게

당신은 무기한으로 무료로 사용할 수 있습니다 ... 그러나 그만한 가치가 있습니다 ... 나는 그것을 항상 사용합니다.
Eddie B
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.