Причиной такого поведения является способ выполнения пакетного сценария. Он читает строку, выполняет ее и читает следующую строку для выполнения, пока не останется больше строк.
Когда вы отключаете диск, вы уничтожаете (виртуальный) путь к сценарию, поэтому «чтение следующей строки» не выполняется - сценарий «пропал». Даже если размонтирование является самой последней строкой скрипта, интерпретатор не узнает, пока не попытается прочитать следующую строку - и не сможет, потому что скрипт больше не доступен.
Таким образом, ваше сообщение об ошибке не из ничего внутри вашего скрипта, а из самого интерпретатора, пытающегося прочитать следующую строку скрипта.
Если вы вводите команду в командной строке, «следующая строка» не ожидается, поэтому ошибка не возникает.
Редактировать
чтобы избежать сообщения об ошибке:
subst x: /d & goto :eof
Строка считывается и анализируется за один раз, и когда эта строка явно выходит из пакета, интерпретатор не пытается прочитать следующую строку .