рискну предположить, что пробелы в WScript.Shell.Run играют такую же роль, какую они играют в cmd - разделение параметров коммандной строки. Попробуйте использовать кавычки для экранирвания, т.е.
mshta javascript:new(ActiveXObject)('WScript.Shell').Run('"'+decodeURIComponent(escape('%1'.substr(9)))+'"'),window.close()