Merkwürdiges Verhalten mit Sonderzeichen in Argumenten von Batch-Funktionen?

Angenommen, Sie rennentest.bat "blabla,blabla,^>blabla", "blaby"

test.bat Implementierung:

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

Die Ausgabe ist wie erwartet:

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

Was aber, wenn Sie test.bat zu einer Funktion in einer Batch-Datei machen:

@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

Nach dem Ausführen ist die Ausgabe:

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

Huh?

Woher?blabla in die LISTE gehen?ARG 1 hat^^? Warum?

Kann jemand erklären, wie sich Sonderzeichen in Funktionsargumenten anders verhalten als in Befehlszeilenargumenten?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage