Как сказал GolezTrol, ,
недопустимый символ для метки.
Но это еще сложнее, вы можете просмотреть его с двух точек.
Сначала с метки-вида:
Символы метки никогда не будут расширены, имя метки останавливается на одном из символов :+&|<>
, и вы не можете заключить их в кавычки или символы вставки, поскольку кавычки и символы вставки являются действительными символами метки тоже.
Допустимым меткам может предшествовать ЛЮБОЙ символ (но только один), за которым следует множество из SPACE,;=TAB
Другой вид взят из команды call или goto:
Существуют эти символы, которые останавливают метку <space>
, <TAB>
и :,;=+
, даже если метка заключена в кавычки, такие как
call :"myLabel+ignored"
exit /b
:"myLabel
echo It's called by %0
Но вывод будет :"myLabel+ignored
, даже если имя искомой метки будет только "myLabel
.
(<>
также может остановить метку, но не в кавычках, они, кажется, работают совсем по-другому.
С этими двумя правилами можно понять, как это работает.
@echo off
call :%%%%X+Y%%
echo ---
<;;==;,,:%X<nul=echo hello
echo Called by %0
exit /b