공백과 문자를 제거하여 여러 파일 이름의 이름을 바꾸는 방법은 무엇입니까? [복제]


0

이 질문에는 이미 답변이 있습니다.

이름을 바꿀 파일이 여러 개 있습니다.

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

cmd 또는 배치 파일에서이 작업을 수행한다고 가정합니다. 그래서 Bulk Rename Utility를 사용할 수 없었습니다. @ 스콧
Ezhilarasan

답변:


0

글쎄, 몇 가지 일이 일어난다 :

  1. 시스템이 영어 이외의 언어를 사용하도록 설정되어 있습니까? 내 (영어 기반) 시스템에서 당신이하려고하는 명령은 FOR /F그렇지 않습니다 FOR /G.
  2. 당신은 (세 가지를 추출하고 1-3) 토큰으로 시작 %%G,하지만 당신은 사용하고 %%F, %%G하고 %%H. 아무것도 넣을 수 없습니다 %%F. 어느 변경 FOR을 참조하도록 문을 %%F, 또는 사용하는 루프 본문을 변경 %%G, %%H하고 %%I. 제외하고 ...
  3. ... 하지마. 귀하의 접근법에 결함이 있습니다. .구분 기호로 마침표 ( )와 공백 을 갖는 것이 무엇을 의미하는지 생각해보십시오 . 파일 이름이 다음과 같은 토큰으로 나뉩니다.

                                         # 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.
    • 확장은 항상 세 번째 토큰이되는 것은 아니며 사실,
    • 예를 들어 파일 이름 은 세 번째 토큰 이 아니며
    • 항상 동일한 토큰 번호는 아닙니다.


    우리는 이것으로 돌아 가야 할 것입니다.

  4. REN (RENAME) 명령으로 무엇을하고 있다고 생각하십니까? 특히, 당신은 왜 퍼팅 \%SourceDir% 사이 part1part2? 이 일을하는 유일한 희망은 %SourceDir%\ 전에 두는 것 part1입니다. 그리고 백 슬래시 (주의 \) 가야합니다 %SourceDir% .
  5. 이 파일이 전체 배치 파일이면 마지막에 특별한 작업을 수행 할 필요가 없습니다. 배치 파일은 끝에 도달하면 종료됩니다. 그러나 이것이 더 큰 시스템의 일부라면, 끝에 명확한 종료 명령을 넣고 싶을 수도 있습니다. 그 명령은 GOTO :EOF그렇지 않아야 GOTO EOF합니다.

말뚝을 쌓지 말고 출력물을 가져 와서 DIR 토큰에서 즉시 해제 하는 방법에는 결함이 있습니다. 귀하의 예제 이름에서 보면, 문자열은 ERJP12 10.5세 토큰으로 분류됩니다 : ERJP12, 10,와 5. 그러나 ERJP12.10.5그렇게하는 것과 같은 토큰으로 분류하고, 얻을 것이다 ERJP12 10 5ERJP12.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"
    )
)

0


이 특별한 경우 의 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가있는 파일 만 반환하므로 이름을 바꿀 때 문자 그대로 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.