En la programación batch de MSDOS no creo ue "||" haga las funciones de un "or" aunque sé que es así en otros "lenguajes de programación". Me inclino, más bien, por la equivalencia con "if errorlevel 1" que querría decir, a grandes rasgos "si la salida del anterior comando fue errónea". En MSDOS si el comando inmediatamente anterior terminó correctamente errorlevel vale cero y en caso contrario valdrá algo distinto de cero.
Pero por lo que dices creo que el problema estará más bien, en el funcionamiento del comando shutdown "importado" de XP. Yo lo probaría directamente en la máquina en la que tienes Windows 2000 Server, desde una ventana de CMD o MSDOS con unas opciones como "shutdown -s -t 300" para que te dé 300 segundos de tiempo para abortar el comando con "shutdown -a". Si responde como se espera te saldrá una ventana emergente con un temporizador decreciente y con el "shutdown -a" podrás abortar el apagado. Si eso no funciona habrá que buscar otro comando o sw adicional que consiga el apagado. En algún foro he visto que hablan de un psshutdown.exe pero no lo he encontrado por el momento. Yo tengo un programa que se llama AbsoluteShutdown.exe (de 710 KB) pero no sé de donde lo saqué ni tampoco si funcionará correctamente en un Windows 2000 Server.
Puedes echarle un vistazo a estas páginas:
http://www.cyberciti.biz/tips/schedule-windows-server-to-reboot-or-shutdown-automatically.html
http://support.microsoft.com/kb/317371/es
A ver si te dan alguna pista.
Si el shutdown importado funciona correctamente tendríamos que volver a sospechar del "||". Pero si quieres practicar con la solución que te propuse puedes sustituir, a modo de prueba, el "if errorlevel 1 shutdown -s" por "if errorlevel 1 echo el ping fue incorrecto" y hacer el ping a una IP que no exista o no sea accesible. Si eso funciona como se espera puedes volver a usar "||" y ver si "ping 100.100.100.100 || echo PING INCORRECTO" también da el mismo resultado.
Ya me dirás.