Bueno yo hize un programa en vb que hace exactamente lo que tu quieres, lo de shutdown -s .. podría servir pero lo + confiable es exitwindowsex.
si quieres ver el programa visita
www.cybersword.tk se llama CSS - Shutdowner.
Bueno pero en cuanto a lo de pq no funciona el exit windows es pq tienes que cambiar los privilegios, yo lo hice sin saber muy bien lo que hacía se deben usar otras apis y el código es bastante largo.
También usé algunas apis para detectar que SO tiene el usuario y así usar todo el enredo de los privilegios o no.
Sin embargo voy a mirar como seria con el .bat creo que puede ser muy buena idea con muuuucho menos código, el shell te puede servir en este caso pero para ejecutar cualquier tipo de programa documento o lo que sea usa una api llamada shellexecute.