2014-02-17 3 views
2

스크립트가 잘 작동하기 때문에 일반적으로 수정 한 파일 (주로 .mp3 파일)의 폴더에서 실행하여 파일 이름 (Numbers spaces dashes ect)에서 첫 번째 X 문자를 여러 개 잘라냅니다 파일..bat 이름 바꾸기 파일이 여러 번 실행됩니다.

@echo off 
setLocal enableDelayedExpansion 
set X=5 
set FOLDER_PATH=. 
pushd %FOLDER_PATH% 
for %%f in (*) do if %%f neq %~nx0 (
    set "filename=%%~nf" 
    set "filename=!filename:~%X%!" 
    ren "%%f" "!filename!%%~xf" 
) 
popd 

는하지만 내 SD 카드에 실행 (갤럭시 S4의 w 용으로 포맷./안드로이드 4.3) 내가 연결 한 파일의 70 %를 완벽하게 작동합니다. 그러나 어떤 경우에는 두 번 실행되며 아주 드물게 실행되는 경우도 거의 없습니다. 나는 완전히 그것에 푹 빠져있다, 그냥 SD 카드인가?

+0

안드로이드 태그에 대해 불편을 끼쳐 드려 죄송합니다. 내 잘못 – user3268199

답변

2

와일드 카드를 사용한 간단한 FOR 명령은 전체 디렉토리 읽기를 완료하기 전에 파일 반복을 시작합니다. 파일 블록을 버퍼링하고 반복하여 중단 한 부분을 집어들입니다. 파일의 이름을 바꿀 때 이름이 바뀐 파일은 나중에 목록에서 정렬되고 나중에 파일 블록에서 선택 될 수 있습니다. 따라서 더블 이름 바꾸기.

디렉터리 목록을 수정하는 루프가있을 때마다 간단한 FOR 대신 DIR/B 명령과 함께 FOR/F를 사용해야합니다.

for /f "eol=: delims=" %%F in ('dir /b /a-d-h-s') do ... 

EOL=: 파일 이름이 ; (가능성이 있지만 가능)로 시작하는 단지의 경우입니다. 동일한 결과를 갖는 다른 유효한 옵션은 EOL=* 또는 EOL=?입니다. 모두는 파일 이름이나 경로를 시작할 수없는 문자입니다.

+0

감사합니다, 당신의 대답은 고맙게 생각합니다. 그것은 다른 영역에서도 많은 도움이 될 것입니다! – user3268199

관련 문제