2013-01-07 4 views
1

나는 처음으로 도스 스크립트를 만드는 중입니다.번호 매기기 스크립트와 관련된 문제

일련 번호와 년을 접두사로 사용하여 내 사진의 이름을 바꿀 스크립트를 만들려고합니다. 이 스크립트를 만들었습니다 :

이슈 가끔은 잘 동작하고 때로는 이미 이름이 바뀐 파일의 이름을 다시 한 번 바꿉니다. 1 (올바른)

RUN : 여기에 2 예는 (당신이 볼 수 있듯이, 나는 DIR 및 ECHO는 위의 문제 해결을위한 스크립트에 추가)

Directory of C:\TEST 

07/01/2013 10:55 <DIR>   . 
07/01/2013 10:55 <DIR>   .. 
04/08/2011 14:28   16.823 PICT_2012_0005.JPG 
04/08/2011 14:28   16.823 PICT_2012_0006.JPG 
04/08/2011 14:28   16.823 PICT_2012_0007.JPG 
07/01/2013 10:56    368 script.cmd 
      4 File(s)   50.837 bytes 
      2 Dir(s) 30.342.901.760 bytes free 
"PICT_2012_0005.JPG" 5 
"PICT_2012_0006.JPG" 6 
"PICT_2012_0007.JPG" 7 

RUN 2 (실패) :

Directory of C:\TEST 

07/01/2013 10:56 <DIR>   . 
07/01/2013 10:56 <DIR>   .. 
04/08/2011 14:28   16.823 PICT_2011_0005.JPG 
04/08/2011 14:28   16.823 PICT_2011_0006.JPG 
04/08/2011 14:28   16.823 PICT_2011_0007.JPG 
07/01/2013 10:56    368 script.cmd 
      4 File(s)   50.837 bytes 
      2 Dir(s) 30.342.901.760 bytes free 
"PICT_2011_0005.JPG" 5 
"PICT_2011_0006.JPG" 6 
"PICT_2011_0007.JPG" 7 
"PICT_2012_0005.JPG" 8 

내가 뭘 잘못하고 있는지 알기나 해?

감사합니다.

+0

이것은 파일의 디렉토리를 반복하고 그 파일을 수정하는 경우 'for' 명령의 알려진 기능/문제/정의되지 않은 동작입니다. for 루프는 폴더에 정적 파일 목록을 보관하지 않습니다. 이에 대한 심층적 인 토론을 보려면이 포럼을 참조하십시오. http://www.dostips.com/forum/viewtopic.php?f=3&t=4138&sid=463cb91964f497c478afcca79c33384a이 명령문은'for/F "delims ="%% F in ('dir/B *. jpg ') 호출 : renameit "%% ~ fF"' –

+0

정말 감사합니다. 몇 가지 테스트와이 문장은 실제로 잘 작동하는 것 같습니다. – bbdoc

답변

3

확장 전체 답변으로 의견을 작성하십시오.

for 명령의 알려진 기능/문제/정의되지 않은 동작입니다. 파일 디렉터리를 반복하면서 해당 파일을 수정하면 for 루프는 폴더에 정적 파일 목록을 보관하지 않습니다. 대신 파일 시스템에서 아무 것도 반환되지 않을 때까지 다음 파일을 확인합니다. 그러나 루프에서 파일을 수정할 때 파일 시스템은 수정 내용을 추가 파일로보고 for 루프로 다시 전송됩니다. 이로 인해 파일의 for 루프 및 파일 시스템 경쟁 조건에 따라 알 수없는 번호가 다시 처리됩니다.

자세한 내용은이 포럼을 참조하십시오.

http://www.dostips.com/forum/viewtopic.php?f=3&t=4138&sid=463cb91964f497c478afcca79c33384a

당신은 양자 택일 문이를 사용할 수 있습니다 for /F "delims=" %%F in ('dir /B *.jpg') do call :renameit "%%~fF"

dir 명령은 파일의 재귀를 방지의 실행 시간에 디렉토리에있는 파일의 정적 목록을 생성합니다.

+0

+1 니스, 나는 그 것을 기억해야합니다 :) –