2010-07-23 8 views
2

아마 너무 쉽게 질문 할 수 있지만 과 같은 파일 확장명을 일치 시키려면 어떻게해야합니까? jpg~ (즉, 프로그램이 로컬 복사본을 만든 jpg)과 일치하지 않습니다. 현재 줄은 다음과 같습니다. 일괄 파일 - 일치하는 파일 확장자

for /f %%a in ('dir /b *.jpg') do echo %%~na 

그러나 모든 프로그램의 (a .jpg~ 파일을 만든 따라서 등) 열려있는 파일 중 하나의 사본이있는 경우이 정규 표현식도 일치합니다.

for /f %%a in ('dir /b *.jpg$') do echo %%~na 
+1

'$ '는 정규 표현식의 의미입니다. 그것은 분명히 간단한 와일드 카드 매칭의 일부가 아닙니다. – Joey

답변

4

나는 (단지 FOR 명령과 함께이를 필터링 할 수 있습니다 생각하지 않는다 출력하면 파이프 않는 한 이 경우에는 간단한 테스트를 추가하면됩니다 :

for %%A IN (*.jpg) DO if "%%~xA"==".jpg" @echo %%~A 
+0

훌륭합니다, 감사합니다! – Stephen

+2

이 IMHO 지연 동작은 http://support.microsoft.com/?kbid=164351에서 확인하십시오. – Anders

1

내가 생각하는 문제는 짧은 이름의 표현에서 발생 : 나는 '라인의 끝'되고, 그러나 이것은 전혀 작동하지 않는 일을 $에 대한 참조를 발견했다. (dir /X를 사용하면 xxx.jpgxxx.jpg~ 모두 .jpg로 끝나는 8.3 파일 이름을 볼 수 있습니다.)

+0

아, 그건 재미 있어요. 따라서 dir이/b 옵션을 사용하고 있음에도 불구하고 여전히 8.3 파일 이름과 일치합니까? Oh, Windows ... – Stephen

+0

@Stephen : '/ b'는 파일 이름이 일치하는 방식을 변경해야하는 이유는 무엇입니까? If는 결과가 출력되는 방식을 제어합니다. – Joey

+0

글쎄, 그것은 전적으로 그들이 어떻게 일치를 구현 했느냐에 달려 있지만, 사용자가 8.3이 아닌 전체 형식으로 출력을 원한다는 것을 안다면, 전체 이름과 일치 할 것이라고 생각했을 것입니다. 다시 말하지만, 8.3이 아닌 이름이 나온 후에 언어가 얼마나 많이 변경되었는지는 알 수 없습니다. – Stephen