= Batch File Variables = <> ---- == Declaration == Variables are declared with the `set` [[Batch/BuiltinCommands#Set|builtin. {{{ set foo=bar }}} ---- == Usage == Variables are accessed by their name. A percent sign (`%`) must surround the name. {{{ set bar=%foo% }}} If a variable's value includes a character that the shell will interpret specially, [[Batch/Quoting|quote]] the variable. {{{ set bar="%foo%" }}} If a variable is not set, no substitution occurs. {{{ set MyVar= echo %MyVar% # '%MyVar%' }}} ---- == Special Variables == ||'''Variable'''||'''Value''' || ||`%#` ||number of arguments || ||`%$` ||all arguments as a string || ||`%*` ||all arguments as a string, unmodified by the `shift` [[Batch/BuiltinCommands#Shift|builtin]]|| ||`%@` ||all arguments as a string, but each token is [[Batch/Quoting|quoted]] || === Positional Variables === The name of a command is stored in `%0`. The first argument to the command is stored in `%1`. And so on until the 9th argument, `%9`. For additional arguments, use the `shift` [[Batch/BuiltinCommands#Shift|builtin]] to move them into the 9 accessible variables. To get all arguments as a string (like `%$`) starting from index ''n'', try `%n$`. To get all arguments until index ''n'' (non-inclusive), try `%-n$`. ---- CategoryRicottone