2017-10-18 116 views
5

背景:一些Windows的命令行程序允许在他们的第一个参数使用*.** argv中[1]用C

myprogram *.* 

,并在该目录下的所有文件会自动循环。

一些别人没有的,因此需要一批循环:

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

问:有没有一个标准的方式(在C语言中定义或通过操作系统提供?),以允许在*.**.txt参数,这样它会自动处理相关文件?

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描述,自动遍历程序调用C书面申请*。*,因为他们背后的代码。通过编写代码,您总是可以达到相同的行为 – P0W

+6

C语言中没有标准。参数扩展(如果有的话)由shell完成。通常,Unix/Linux shell会进行扩展,但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?