2017-10-18 12 views
5

배경 :. 일부 Windows 명령 줄 프로그램이 자신의 첫번째 인수에 *.*을 사용할 수 있습니다 :* * 변수는 argv에서 [1] C에서

myprogram *.* 

및 디렉토리의 모든 파일에 자동으로 루프.

일부 다른 따라서 배치 루프를 필요로하지 않습니다 :

for %%c in ("*.*") do myprogram "%%c" 

질문 : 이 거기에 *.* 또는 *.txt을 허용하는 표준 방식 (C 언어에서 정의 또는 OS에서 제공?) 인수를 사용하여 관련 파일에서 자동으로 처리합니다.

int main(int argc, char *argv[]) 
{ 
    FILE *kf; 

    "for fname in argv[1]" // pseudo code here meaning: 
           // let's loop on all files described by the first argument 
    { 
     kf = fopen(fname, "rb"); 
     ... 
    } 
} 

나는 이것에 대한 해결책 (등, FindFirstFile을를 사용하여, 와일드 카드 확장의 바퀴를 재발 명) 내 자신을 압연하기 전에 존재하는 경우

+1

AFAIK (자동으로 *. *를 반복하는 프로그램) 코드를 뒤에 코드로 작성할 수 있습니다. 코드를 작성하여 항상 동일한 동작을 얻을 수 있습니다. – P0W

+6

C 언어에는 표준이 없습니다. 인수 확장 (있는 경우)은 쉘에 의해 수행됩니다. 일반적으로 유닉스/리눅스 셸이 확장을 수행하지만 Windows cmd는 확장을 수행하지 않습니다. 따라서 확장이 이루어지는 Windows 프로그램은 직접 처리합니다. argv [1]에서 "* .txt"를 찾은 다음 디렉토리 목록을 작성하고 발견 된 각 파일을 처리합니다. –

+0

... [FindFirstFile] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa364418(v=vs.85) .aspx) 및 친구가 작업을 수행합니다. –

답변

0

아니, 할 수있는 표준 방법이 없습니다 확인하고 싶어서 이. 문제가 ''입니다. '이 주 기능 안에 있습니다. 그러나 주요 C 라이브러리 본문 외부에서 파생 된 일부 라이브러리가 필요할 수도 있습니다. 또한 파일 세트를 반복하여 배치 파일을 작성하고 Windows Batch File Looping Through Directories to Process Files?