for
루프를 사용하여 디렉토리의 각 파일을 어떻게 반복 할 수 있습니까?
특정 항목이 디렉토리인지 아니면 파일인지를 어떻게 알 수 있습니까?
답변
현재 디렉토리에있는 모든 파일과 파일 만 나열됩니다.
for /r %i in (*) do echo %i
또한 배치 파일에서 해당 명령을 실행하는 경우 % 부호를 두 배로 늘려야합니다.
for /r %%i in (*) do echo %%i
(감사합니다 @agnul)
답변
반복 …
- … 현재 디렉토리의 파일 :
for %f in (.\*) do @echo %f
- … 현재 디렉토리의 하위 디렉토리 :
for /D %s in (.\*) do @echo %s
- … 현재 및 모든 하위 디렉토리의 파일 :
for /R %f in (.\*) do @echo %f
- … 현재 및 모든 하위 디렉토리의 하위 디렉토리 :
for /R /D %s in (.\*) do @echo %s
불행히도 파일과 하위 디렉토리를 동시에 반복하는 방법을 찾지 못했습니다.
더 많은 기능을 위해 bash와 함께 cygwin 을 사용하십시오 .
이 외에도 MS Windows의 기본 제공 도움말은 cmd의 명령 줄 구문에 대한 설명을 제공하는 훌륭한 리소스입니다.
또한 여기를보십시오 : http://technet.microsoft.com/en-us/library/bb490890.aspx
답변
각 파일을 반복하려면 for 루프가 작동합니다.
for %%f in (directory\path\*) do ( something_here )
제 경우에는 파일 내용, 이름 등도 원했습니다.
이로 인해 몇 가지 문제가 발생하여 유스 케이스가 도움이 될 것이라고 생각했습니다. 다음은 디렉토리의 각 ‘.txt’파일에서 정보를 읽고 해당 파일로 무언가를 수행 할 수있는 루프입니다 (예 : setx).
@ECHO OFF
setlocal enabledelayedexpansion
for %%f in (directory\path\*.txt) do (
set /p val=<%%f
echo "fullname: %%f"
echo "name: %%~nf"
echo "contents: !val!"
)
* 제한 : val <= %% f는 파일의 첫 번째 줄만 가져옵니다.
답변
FOR
명령 줄에서 실행 하는 것과 배치 파일에서 실행하는 것에 는 약간의 차이가 있습니다. 배치 파일에서 %
각 변수 참조 앞에 두 문자 를 넣어야 합니다.
명령 행에서 :
FOR %i IN (*) DO ECHO %i
배치 파일에서 :
FOR %%i IN (*) DO ECHO %%i
답변
이 for-loop는 디렉토리의 모든 파일을 나열합니다.
pushd somedir
for /f "delims=" %%f in ('dir /b /a-d-h-s') do echo %%f
popd
“delims =”는 공백이있는 긴 파일 이름을 표시하는 데 유용합니다 …
‘/ b’는 크기 날짜 등이 아닌 이름 만 표시합니다.
dir의 / a 인수에 대해 알아야 할 사항.
- “/ a”를 사용하면 숨겨진 속성 및 시스템 속성을 포함한 모든 것이 나열됩니다.
- “/ ad”는 숨겨진 디렉토리와 시스템 디렉토리를 포함한 서브 디렉토리 만 표시합니다.
- “/ ad”인수는 ‘D’ irectory 속성이있는 컨텐츠를 제거합니다.
- “/ adhs”는 모든 것을 표시하지만 ‘D’ irectory,’H’idden ‘S’ystem 속성이있는 항목을 표시합니다.
명령 행에서 이것을 사용하는 경우 “%”를 제거하십시오.
도움이 되었기를 바랍니다.
답변
% 1은 (는) 처음 전달 된 인수를 나타내며 반복자에서 사용할 수 없습니다.
이 시도:
@echo off
for %%i in (*.*) do echo %%i
답변
for %1 in (*.*) do echo %1
전체 안내서를 보려면 cmd에서 “HELP FOR”을 사용해보십시오.
XP 명령어를위한 안내서입니다. http://www.ss64.com/nt/