명령 프롬프트에서 이름 바꾸기


0

파일 이름이 같은 이미지가 0034343.jpg있고 앞에 오는 0을 제거 34343.jpg하고 새 파일 이름으로 남겨두고 싶습니다 .

명령 프롬프트에서 어떻게해야합니까? 시도 REN 00*.jpg *.jpg했지만 작동하지 않았습니다.


모든 선행 0을 제거 하시겠습니까, 아니면 2 만 원하십니까? 1이 없거나 0이 없으면 어떻게합니까?
colithium

0이 원래 파일 이름으로 남아 있지 않으면 시작시 00 만

내 일반적인 방법은 dir / b 및 excel formulae를 사용하여 배치 파일을 만드는 것입니다. 더 좋은 방법이있을 수 있지만 배치 프로그래밍과 달리 이해하기 때문에 내 방식이 마음에 듭니다. :)

답변:


5

당신은 시작할 수 있어야합니다 :

@setlocal enableextensions enabledelayedexpansion
@echo off
for /f "delims=*" %%a IN ('dir /b 00*.jpg') do (
    set file=%%a
    set newfile=!file:~2!
    echo move !file! !newfile!
)
endlocal

이것은 그대로 move명령을 에코합니다 . echo테스트를 마치면 제거하십시오 . 파일 이름에 공백이 있으면 예상대로 작동하지 않을 수 있습니다.

조금씩 단계별로 살펴보기 :

  • 루프 내에서 환경 변수의 확장 지연을 수행 할 수있는 기능인 setlocal특정 cmd.exe확장 이 가능 for합니다.
  • for루프는 cmd를 실행 dir /b 00*.jpg파일 당 하나의 반복 (설정하고, %%a파일 이름을).
  • 첫 번째는 set단순히 파일 이름을 변수에 저장합니다. 두 번째는 세 번째 문자에서 시작하는 부분 문자열 연산입니다.
  • move파일의 이름을 변경합니다.

help명령 행에 명령을 입력하여 다양한 명령을 검사 할 수 있습니다 .

setlocal /?
set /?
for /?
set /?

나는 배치 스크립팅을 많이 이해한다고 말할 수는 없지만 테스트했으며 이것이 일을하는 것처럼 보입니다. :) "echo"제거를 언급하여 실제로 표시하지 않고 실제로 이동하고 .cmd 또는 .bat 파일에 넣어서 이런 종류의 작업을 한 적이없는 사람들을 위해 실행할 수 있습니다. 의회. 나는 거기에 그런 사람들이 많이 있다고 확신합니다 ... :)

@Chris, 나는 어떤 건설적인 비판을 항상 떠 맡는다. 더 유용하게 업데이트되었습니다.

2

이 시도:

for %i in (*.jpg) do (
    set filename=%~nxi
    set newname=%filename:~2%
    ren !filename! !newname!
)

이것은 모든 파일 이름의 시작 부분에서 두 문자를 제거합니다. 지연 확장이 활성화되어 있어야합니다. cmd.exe /v:onXP에서 먼저 해야 할 수도 있습니다 .

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