2013-08-29 2 views
0

이 배치 파일을 작성하여 jpeg 파일 세트의 파일 이름에 텍스트를 추가하고 현재 파일 이름 앞이나 뒤에 추가 할 수있는 옵션을 제공합니다.배치 파일의 루프 For 1 회 파일 이름 바꾸기

파일 이름 앞에 추가 할 때 이상한 이유로 한 파일이 두 번 처리되어 new_new_FileName.jpg 결과가 나오고 다른 모든 파일은 new_FileName.jpg가됩니다.

흥미롭게도이 문제는 항상 발생하지 않으며 파일 이름 뒤에 추가 할 때 항상 정상적으로 작동합니다.

다음은 전체 코드이며 앞뒤의 시각적 차이는 없지만 결과는 다릅니다. 아무도이 파일을 조사하고 내가 틀린 곳을 설명해 주시겠습니까?

도움을 주시면 감사하겠습니다.

@ECHO off 
title Rename Script 
set /A count=1 
:Start 
cls 
set /p STR=choose a string to append: 
cls 
echo 1. Append before 
echo 2. Append after 
set /p choice=I choose (1,2): 
if %choice%==1 goto renameb 
if %choice%==2 goto renamea 
:renameB 
cls 
echo Appending '%STR%' before current file name. 
echo. 
set /A count=0 
FOR %%a in (*.jpg) DO (
    ren "%%~a" "%STR%%%~na%%~xa" 
    echo Was: %%~a Became: %STR%%%~na%%~xa 
    set /A count+=1 
) 
goto end 
:renameA 
cls 
echo Appending '%STR%' after current file name. 
echo. 
set /A count=0 
FOR %%a in (*.jpg) DO (
    ren "%%~a" "%%~na%STR%%%~xa" 
    echo Was: %%~a Became: %%~na%STR%%%~xa 
    set /A count+=1 
) 
goto end 
:end 
echo[ 
echo %count% files were renamed. 
echo[ 
echo The process in now done. 
pause 

답변

5

이름 바꾸기를 들어, 간단한 for 루프는 작동하지 않습니다

하십시오 for /f 루프가 필요한 FCB's와 기존의 CP/M의 일에서 몇 가지 이유에 대한

FOR %%a in (*.jpg) DO (

for /f "delims=" %%a in ('dir /a-d /b *.jpg') do (
+0

이름 바꾸기, 이전 이름 ​​바꾸기, 항상 그런 것은 아닙니다. '/ f "delims ="'이 (가) 내 코드에 추가하는 기능을 자세히 설명해 주시겠습니까? 귀하의 예에서 사용한 디렉토리 문자가 무엇을 의미합니까? 감사. – Harry

+0

이전 코멘트에 첫 줄을 써서 코드를 언급했습니다. 방금 ​​솔루션을 시도하고 완벽하게 작동합니다. 정확하게 말하면 무엇인지, 그리고 어떻게 다른 폴더를 가리키게하는지 궁금합니다. 당신의 도움을 주셔서 감사합니다. – Harry