2011-03-23 132 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