Dziwne zachowanie ze znakami specjalnymi w argumentach funkcji wsadowych?

Przypuśćmy, że uciekasztest.bat "blabla,blabla,^>blabla", "blaby"

implementacja test.bat:

@SETLOCAL
@ECHO OFF
SET list=%~1
ECHO "LIST: %list%"
ECHO "ARG 1: %~1"
ECHO "ARG 2: %~2"
@ENDLOCAL   
@GOTO :EOF

Dane wyjściowe są zgodne z oczekiwaniami:

"LIST: blabla,blabla,>blabla"
"ARG 1: blabla,blabla,^>blabla"
"ARG 2: blaby"

Ale co, jeśli wykonasz test.bat funkcję wewnątrz pliku wsadowego:

@SETLOCAL
CALL :TEST "blabla,blabla,^>blabla", "blaby"
@ENDLOCAL
@GOTO :EOF

:TEST
@SETLOCAL
@ECHO OFF
SET list=%~1
ECHO "LIST: %list%"
ECHO "ARG 1: %~1"
ECHO "ARG 2: %~2"
@ENDLOCAL   
@GOTO :EOF

Po uruchomieniu wynik jest następujący:

"LIST: blabla,blabla,^"
"ARG 1: blabla,blabla,^^>blabla"
"ARG 2: blaby"

Co?

Gdzieblabla iść na LISTĘ?ARG 1 ma^^? Czemu?

Czy ktoś może wyjaśnić, w jaki sposób znaki specjalne zachowują się inaczej w argumentach funkcji niż argumenty wiersza poleceń?

questionAnswers(2)

yourAnswerToTheQuestion