Нужна рука в синтаксисе пакетной обработки Windows - PullRequest
1 голос
/ 23 марта 2011

Я скомпилировал программу на C ++ в Windows, и она мне нужна для обработки огромного количества моих файлов данных.Файлы называются, например, от «x0000y» до «x9999y».

Программа 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);

}

1 Ответ

2 голосов
/ 23 марта 2011

Это все, что вам понадобится в вашем файле .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 )

Они будут обрабатывать файлы данных в любом порядкеФайловая система предоставляет их имена.

...