다음과 같은 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).