¿Iniciar múltiples tareas en paralelo y esperarlas en Windows?

¿Cómo ejecuto algunas tareas en paralelo en un script por lotes y las espero?

command1;

# command3, command4 and command5 should execute in sequence say task1
# command6, command7 and command8 should execute in sequence say task2
# both task1 and task2 should run independently

command3; command4; command5 | command6; command7; command8;

# should execute only after the above parallel tasks are completed

command9;

Como prueba de concepto probé algo como esto, pero no funciona:

echo "Starting"
start /wait wait20.bat   
start /wait wait40.bat 
echo "Finishing"

wait20.bat parece:

echo "starting 20 seconds job"
timeout 20
echo "finishing 20 seconds job"

¿Qué estoy haciendo mal?

Respuestas a la pregunta(2)

Su respuesta a la pregunta