2011-03-23 97 views
1

我在Windows上编译了一个C++程序,我需要它来处理大量的数据文件。这些文件被命名为例如“x0000y”到“x9999y”。需要一批Windows批处理语法

C++程序一次仅接收一个文件,创建每个文件的输出,保存到某处并终止。我不想对程序进行硬编码,因为我的数据集并不总是具有相同数量的文件 - 并且为此重新编译程序并不酷。所以我正在寻找一个快速的方法来做到这一点:批处理。

问题来了:我在尝试让批处理语法正确和有效时遇到问题。所以可能有人告诉我在批处理版本以下伪代码:?

for (int i = 0; i < lastFile; i++){ 

    String filename; 

    /* 
    Because the files are named "x0000y", "x0034y", etc. 
    We need to put in all the extra 0s in the string if i is less than 1000. 
    */ 
    String numberedString = convertNumToFourDigit(i); 

    filename = "myFileName" + numberedString + "Footer";  

    /* 
    execute the program with the respective filename. 
    */ 
    execute("MyProgram.exe " + filename); 

} 

回答

2

这是所有你需要在你的.bat文件反对所有文件在当前目录下运行程序。

for %%I IN (*) DO (MyProgram.exe %%I) 

如果数据文件位于带有扩展名的子目录中,下面是一个示例。

for %%I IN (subdir\*.dat) DO (MyProgram.exe %%I) 

如果你只想要x0000y形式的文件,那么这将做到这一点。

for %%I IN (x????y) DO (MyProgram.exe %%I) 

这些将以文件系统提供名称的顺序处理数据文件。

+0

实际上,我希望程序只处理文件“x0000y”到“x9999y”,而不是目录中的所有文件。 – Karl 2011-03-23 06:37:37

+1

我加了三分之一,只为你过滤这些文件。每个问号代表一个未知的字符。你也可以用一个星号代替它们的全部四个。 – Avilo 2011-03-23 06:41:34