CMD "Track ?.mp3"를 사용하여 파일 이름을 "T00?.mp3"로 바꾸는 방법

CMD "Track ?.mp3"를 사용하여 파일 이름을 "T00?.mp3"로 바꾸는 방법

다음과 같은 mp3 파일이 여러 개 있습니다.

Track [number of track].mp3예. Track 1.mp3-Track 11.mp3

이름을 다음과 같이 바꾸고 싶습니다.

T00[number of track]예. T001.mp3-T011.mp3

나는 다음과 같이 1-9 트랙의 이름을 바꾸려고 했습니다.

ren "Track ?.mp3" "T00   ?.mp3"

T00 1.mp3하지만 파일 이름( ) 에 공간이 있습니다 .

업데이트: 공간을 제거하는 코드를 작성하려고 합니다. 이것은 내 코드입니다.

@echo off
setlocal enabledelayedexpansion

for /r %%G in ("T00   ?.mp3") do (

pause

echo -----------------------In loop----------------------------
echo Working with "%%G"

pause

set str=%%G
echo str is = "%str%"

pause

set str=%str:   =0% //replace "   " with 0 
echo 2str is = "%str%"
pause

ren "%%~G" "%str%"

)

내가 받은 메시지는 다음과 같습니다.

-----------------------In loop----------------------------

working with "C:\test\T00   1.mp3"

str = ""

2str = ""

A duplicate file name exists, or the file
cannot be found.


.
.
.

배치 스크립트를 처음 사용하는 것이 무엇인지 모르겠습니다.

답변1

PowerShell을 사용하여정규식 바꾸기그리고형식 문자열

$strPath = "C:\my\folder\*.mp3"

Get-Childitem $strPath | ForEach-Object { 
    $onlyNumbers = $_.Basename -replace ".*\D+",""  
    $WithZeros = "{0:D3}" -f [int]$onlyNumbers
    $fileName = "T$WithZeros.mp3"
    Rename-Item $_ $fileName
    }

핵심 부분은 -replace "^\D+",""파일 이름의 시작 부분(확장자 제외)에서 숫자가 아닌 모든 문자를 검색하여 제거하는 것입니다. 둘째, 스크립트는 에 필요한 만큼 0을 추가합니다 "{0:D3}" -f. 휴식은 쉬운 일이다.

읽다둘 다 연결됨더 알고 싶다면 출처를 참조하세요.

Old name          New name
Track 1.mp3       T001.mp3
Track 11.mp3      T011.mp3
Track 111.mp3     T111.mp3

편집하다:작은 RegEx 실수를 수정했습니다. 이전 99 ballons 01.mp3에는 T9901.mp3.
이제는01 » 001 » T001.mp3

답변2

문제를 해결하기 위해 Linux 또는 Mac OSX를 사용하려면 다음을 수행할 수 있습니다.

count=1
for i in $(ls -v); do
  number=$(printf "%05d" $count)
  ((count++))
  mv $i T00$number.mp3
done

이전에 이 명령으로 생성한 25개 파일에 대해 테스트했습니다.

for ((i=1; i<=25; i++)); do touch "Track $i.mp3"; done

답변3

이것이 도움이 된다면 Total Commander(Windows)에는 훌륭한 다중 이름 바꾸기 도구가 있습니다(원하는 파일을 선택한 다음 Ctrl+M).

관련 정보