La forma más fácil, según lo veo, es usar un bucle for que llame a un segundo archivo por lotes para su procesamiento, pasando a ese segundo archivo el nombre base.
Según el para /? ayuda, basename se puede extraer usando la opción ingeniosa ~ n. Entonces, el script base leería:
for %%f in (*.in) do call process.cmd %%~nf
Luego, en process.cmd, suponga que% 0 contiene el nombre base y actúe en consecuencia. Por ejemplo:
echo The file is %0
copy %0.in %0.out
ren %0.out monkeys_are_cool.txt
Puede haber una mejor manera de hacer esto en un script, pero siempre he sido un poco confuso sobre cómo extraer múltiples comandos en un solo bucle for en un archivo por lotes.
EDITAR: ¡Eso es fantástico! De alguna manera me había perdido la página en los documentos que mostraba que podía hacer bloques de varias líneas en un bucle FOR. Voy a tener que regresar y reescribir algunos archivos por lotes ahora ...