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?