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ń?