A ver... no es por desilusionar a nadie, que realmente lo odio, pero...
Por lo que veo eres bastante nuevo. Hasta hace unos meses tu nivel de batch era muy bajo y aunque batch es fácil de aprender, no lo es tanto aprender las diferentes formas de saltear sus limitaciones. Eso lleva un buen tiempo.
No sé cuánto habrás podido aprender, pero más vale que sea mucho si te quieres meter en un proyecto serio.
Además, si tienes el enorme conocimiento de hardware y programación necesario para programar un SO en C/C++, permíteme la pregunta, ¿qué diablos haces tonteanto de esta forma con batch?
Ahora pasemos a los problemas intrínsecos que plantea en sí tu proyecto.
Hablar de un SO en batch es una total tontería. Hay un programita en windows, no muy grande y bastante mal programado (como casi todo lo de mocosoft) llamado cmd.exe. Este programita, a cuya ejecución están asignados todos los ficheros con extensión .bat y .cmd, interpreta las líneas de tu script y trabaja con el SO (Windows) para llevarlas a cabo.
Si desde batch creas un fichero, será la cmd la encargada de llamar a la API.
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx
Imagino que con esto ya te das cuenta de los errores de terminología.
Ahora, si quieres hacer una especie de máquina virtual, por ejemplo, para ejecutar scripts batch sin peligro para el resto del sistema, eso sí que lo veo más factible, aunque de todas formas igualmente no es fácil. Habría que procurar aislar en apariencia totalmente ese script batch del sistema, y no digo que sea imposible, pero sí que bastante laborioso.
¿Formas? Desde tu "Batch Virtualbox" podrías ver los comandos que tiene el script a ejecutar y los cambios que podría hacer en Windows. Ver la condición del sistema en ese momento y más tarde, después de la ejecución del script, restaurarlos.
Esa tal vez sería la forma más sencilla.
En fin, como digo, no es mi intención desalentarte, pero por favor sé consciente de las cosas antes de querer hacer nada.