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

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

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



답변

명령 줄 사용법 :

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


답변

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

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

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


답변

가장 쉬운 방법 :

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

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

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

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

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

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


답변

사용하다

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

와:

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

답변

또 다른 방법:

for %f in (*.mp4) do call ffmpeg -i "%~f" -vcodec copy -acodec copy "%~nf.avi"


답변

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


답변