글쎄, 몇 가지 일이 일어난다 :
- 시스템이 영어 이외의 언어를 사용하도록 설정되어 있습니까? 내 (영어 기반) 시스템에서 당신이하려고하는 명령은
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"
)
)