이 질문에는 이미 답변이 있습니다.
-
어떻게 파일의 이름을 바꿀 수 있습니까?
22 답변
이름을 바꿀 파일이 여러 개 있습니다.
Eg:
ERJP00300029 3.13.jpg
SRKP00100002 12.04.jpg
ERJP01500001 ERJP12 10.5.jpg
위의 파일 이름을 다음과 같이 바꾸고 싶습니다.
Eg:
ERJP00300029.jpg
SRKP00100002.jpg
ERJP01500001.jpg
첫 번째 부분 이름 만 지키는 법.
아래 코드를 사용했지만 정확한 해결책을 얻을 수 없습니다. 내가 실수 한 곳.
@ECHO ON
SETLOCAL ENABLEDELAYEDEXPANSION
SET SourceDir=F:\Ezhilarasan\Exibt\need_upload\ERHP\check
FOR /G "TOKENS=1-3 DELIMS=. " %%G IN ('DIR /B /A-D "%SourceDir%\*.jpg"') DO (
SET "part1=%%~F"
SET "part2=%%~G"
SET "part3=%%~H"
REN "!part1! \%SourceDir%!part2!.!part3!" "!part1!.!part3!"
)
GOTO EOF
답변
글쎄, 몇 가지 일이 일어난다 :
- 시스템이 영어 이외의 언어를 사용하도록 설정되어 있습니까? 내 (영어 기반) 시스템에서 당신이하려고하는 명령은
FOR /F
그렇지 않습니다FOR /G
. - 당신은 (세 가지를 추출하고
1-3
) 토큰으로 시작%%G
,하지만 당신은 사용하고%%F
,%%G
하고%%H
. 아무것도 넣을 수 없습니다%%F
. 어느 변경FOR
을 참조하도록 문을%%F
, 또는 사용하는 루프 본문을 변경%%G
,%%H
하고%%I
. 제외하고 … -
… 하지마. 귀하의 접근법에 결함이 있습니다.
.
구분 기호로 마침표 ( )와 공백 을 갖는 것이 무엇을 의미하는지 생각해보십시오 . 파일 이름이 다음과 같은 토큰으로 나뉩니다.# 1 # 2 # 3 # 4 # 5 ERJP00300029 3.13.jpg → ERJP00300029 3 13 jpg SRKP00100002 12.04.jpg → SRKP00100002 12 04 jpg ERJP01500001 ERJP12 10.5.jpg → ERJP01500001 ERJP12 10 5 jpg
그래서,
- 파일 이름이 항상 같지는 않습니다
part1 part2.part3
. - 확장은 항상 세 번째 토큰이되는 것은 아니며 사실,
- 예를 들어 파일 이름 은 세 번째 토큰 이 아니며
- 항상 동일한 토큰 번호는 아닙니다.
우리는 이것으로 돌아 가야 할 것입니다.
- 파일 이름이 항상 같지는 않습니다
- REN (RENAME) 명령으로 무엇을하고 있다고 생각하십니까? 특히, 당신은 왜 퍼팅
\%SourceDir%
사이part1
와part2
? 이 일을하는 유일한 희망은%SourceDir%\
전에 두는 것part1
입니다. 그리고 백 슬래시 (주의\
) 가야합니다 후%SourceDir%
. - 이 파일이 전체 배치 파일이면 마지막에 특별한 작업을 수행 할 필요가 없습니다. 배치 파일은 끝에 도달하면 종료됩니다. 그러나 이것이 더 큰 시스템의 일부라면, 끝에 명확한 종료 명령을 넣고 싶을 수도 있습니다. 그 명령은
GOTO :EOF
그렇지 않아야GOTO EOF
합니다.
말뚝을 쌓지 말고 출력물을 가져 와서 DIR
토큰에서 즉시 해제 하는 방법에는 결함이 있습니다. 귀하의 예제 이름에서 보면, 문자열은 ERJP12 10.5
세 토큰으로 분류됩니다 :
ERJP12
, 10
,와 5
. 그러나 ERJP12.10.5
그렇게하는 것과 같은 토큰으로 분류하고, 얻을 것이다 ERJP12 10 5
및 ERJP12.10 5
. 토큰에서 원본 (즉, 현재, 기존) 파일 이름을 재구성 할 수 없습니다. 당신은 할 필요가 포착 그대로 원래의 파일 이름을 한 다음를 분해.
왜 네가 도망쳐 야하는지 모르겠다 DIR
. 필요한 것은 모두 있습니다 FOR %%F IN ("%SourceDir%\*.jpg") DO
. 파일 의 이름 (서브 디렉토리 없음)만을 제공하며,의 출력과는 달리 DIR
소스 디렉토리의 이름 (파일이 들어있는 디렉토리)을 포함합니다. 이제 우리는 완전한 현재 파일 경로 이름을 가지고 있으며 %%F
, 우리는 그것을 분해 할 수 있습니다.
이제 우리가 사용 FOR /F
합니다. 따라서, 파일이 걸릴 N 의 AME 부 %%F
, 제 1 부분 인 토큰 꺼내 펜텐. 그런 다음 원본 전체 경로 이름의 첫 번째 부분의 이름을 e x 긴장의 이름으로 바꿉니다 . 전체 배치 파일은 다음과 같습니다.
SET SourceDir=F:\Ezhilarasan\Exibt\need_upload\ERHP\check
FOR %%F IN ("%SourceDir%\*.jpg") DO (
FOR /F "DELIMS=. " %%A IN ("%%~nF") DO (
REN "%%F" "%%A%%~xF"
)
)
답변
이 특별한 경우 의 Scott의 자세한 설명 에 모두 동의하지만
@Echo On
Pushd F:\Ezhilarasan\Exibt\need_upload\ERHP\check
FOR /F %%G IN ('DIR /B /A-D "*.jpg"') DO REN "%%G*.jpg" %%G.jpg
PopD
똑같이 할 것입니다.
기본값은 for /f "tokens=1 delims= "
The dir은 ext jpg가있는 파일 만 반환하므로 이름을 바꿀 때 문자 그대로 사용할 수 있습니다.