windows - bat files, functions and caret symbols -
whats's going on?
helper.bat
@echo off echo %1 call:foo %1 goto:eof :foo echo %1 goto:eof run our script following
helper "^^^^"
output
"^^^^"
"^^^^^^^^"
why? know '^' symbol smth special in case of cmd.exe, what's going on here? how function call affect on it?
call special in case!
the batch parser has different phases, in special character phase unquoted carets used escape next character, caret removed.
in case, carets quoted, not affected.
then carets can affected again in delayed expansion phase, quotes havn't special meaning there, carets used escape exclamation marks.
normally after delayed phase done, if use call carets doubled.
invisible, call restarts parser , carets removed in special character phase again.
in case quoted, therefore stay doubled.
try this
call call call call echo a^^ "b^" output
a^ "b^^^^^^^^^^^^^^^^" the parser explained @ how windows command interpreter (cmd.exe) parse scripts?
Comments
Post a Comment