На мой взгляд, проще всего использовать цикл for, который вызывает второй пакетный файл для обработки, передавая этому второму файлу базовое имя.
По словам для /? справка, базовое имя может быть извлечено с использованием опции ~ nifty. Итак, базовый скрипт будет выглядеть так:
for %%f in (*.in) do call process.cmd %%~nf
Затем в process.cmd предположим, что% 0 содержит базовое имя, и действуйте соответственно. Например:
echo The file is %0
copy %0.in %0.out
ren %0.out monkeys_are_cool.txt
Возможно, есть лучший способ сделать это в одном скрипте, но я всегда немного сомневался в том, как использовать несколько команд в одном цикле for в пакетном файле.
РЕДАКТИРОВАТЬ: это фантастика! Я как-то пропустил страницу в документах, которая показала, что вы можете делать многострочные блоки в цикле FOR. Я собираюсь пойти придется вернуться и переписать некоторые командные файлы сейчас ...