배치 스크립트를 사용하여 디렉토리의 각 파일에 무언가를 수행하는 방법


265

.bat 또는 .cmd 파일을 사용하여 디렉토리의 각 파일을 어떻게 반복합니까?

간단히하기 위해 파일 이름이나 파일 경로를 에코하는 답변을 제공하십시오.

답변:


348

명령 줄 사용법 :

for /f %f in ('dir /b c:\') do echo %f

배치 파일 사용법 :

for /f %%f in ('dir /b c:\') do echo %%f

업데이트 : 디렉토리에 이름에 공백이있는 파일이 포함 된 경우 for /f명령이 사용 하는 분리 문자를 변경해야합니다 . 예를 들어 파이프 문자를 사용할 수 있습니다.

for /f "delims=|" %%f in ('dir /b c:\') do echo %%f

업데이트 2 : (원래 답변 후 1 년 반 빠른 :-)) 디렉토리 이름 자체에 이름이 공백이 있으면 다음 usebackq옵션을 사용할 수 있습니다 for.

for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f

출력 리디렉션 또는 명령 파이프를 사용해야하는 경우 이스케이프 문자 ( ^)를 사용하십시오 .

for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f

3
적어도 일부 명령의 경우 파일 변수는 큰 따옴표로 묶어야합니다.
Jirka

1
/f이후 에 필요한 for가요? 도움말 문서에 따르면 /f플래그가 열리고 각 파일을 읽습니다. 파일을 에코하거나 이름을 바꾸는 데 필요합니까?
Snekse 2016 년

17
/f후에는 FOR파일로 제한합니다. 마찬가지로 /d디렉토리 (폴더)로 제한하고 /r재귀하도록 지시합니다.

3
+1 이것은 지속적으로 참석하는 살아있는 답변입니다. 많은 감사합니다.
Sabuncu

4
그냥 대신에 ... 다시 따옴표를 사용할 필요가 실현 'dir /b "c:\program files"'그것이 있어야`dir /b "c:\program files"`
endavid

101

또는 다음을 사용하십시오.

forfiles /s /m *.png /c "cmd /c echo @path"

forfiles 명령은 Windows Vista 이상에서 사용할 수 있습니다.


1
두 번째 cmd 셸에서 공백이있는 경로를 사용하는 것은 어려웠습니다. 결국 나는 % PATH % env var를 조정하여 작업을 완료했습니다. 하지만 고마워 도움이 됨
twobob

70

가장 쉬운 방법 :

명령 행에서 다음을 사용하십시오.

for %f in (*.*) do echo %f

배치 파일에서 (% 퍼센트 부호를 두 배로) :

for %%f in (*.*) do echo %%f

폴더가 1 번째 매개 변수로 지정된 배치 파일에서 :

for %%f in (%1\*.*) do echo %%f

8
를 사용하여 dir /B출력 을 평가할 때보 다 가장 쉬울뿐만 아니라 훨씬 더 우아 for합니다.
syneticon-dj

5
하위 디렉토리를 재귀하려면 % f 앞에 / r을 추가하십시오
PRMan

35

사용하다

for /r path %%var in (*.*) do some_command %%var

와:

  • 경로는 시작 경로입니다.
  • %% var는 일부 식별자입니다.
  • *. *는 파일 마스크이거나 변수의 내용입니다.
  • some_command는 경로를 사용하여 실행하는 명령이며 var는 매개 변수로 연결됩니다.

2
오류가 발생합니다. %%var was unexpected at this time.정확한 예를 들어 줄 수 있습니까? 나는 다양한 변형을 시도했다for /r . %%var in (*.*) do echo %%var
hippietrail

3
이상한 이유로 변수 이름은 한 문자로 제한됩니다.
ollb

2
다른 결과에 다른 스마일을 사용할 수 있습니까?
Silver Quettier


-1

디렉토리의 모든 파일을 숨김 / 시스템 / 읽기 전용으로 표시 한 맬웨어가있었습니다. 다른 사람이이 상황에서 자신을 발견하면 디렉토리로 들어간 다음를 실행하십시오 for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.