A maneira mais fácil, a meu ver, é usar um loop for que chame um segundo arquivo em lotes para processamento, passando para o segundo arquivo o nome base.
De acordo com o / /? ajuda, o nome da base pode ser extraído usando a opção nifty ~ n. Portanto, o script base seria:
for %%f in (*.in) do call process.cmd %%~nf
Em process.cmd, suponha que% 0 contenha o nome da base e aja de acordo. Por exemplo:
echo The file is %0
copy %0.in %0.out
ren %0.out monkeys_are_cool.txt
Pode haver uma maneira melhor de fazer isso em um script, mas sempre fiquei um pouco confuso sobre como puxar vários comandos em um único loop for em um arquivo em lotes.
EDIT: Isso é fantástico! De alguma forma, havia perdido a página nos documentos que mostravam que era possível fazer blocos de várias linhas em um loop FOR. Vou precisar voltar e reescrever alguns arquivos em lotes agora ...