Batch uses the percentage sign (%) to mark variables. The set command is used to assign and clear variables. When DOS reads the batch file, strings like copy %var1% %var2% will be expanded to read say copy source.fil dest.fil (assuming that's what they're set to) before feeding the line to the command interpreter. %% is reduced to % when interpreted, so the at-the-prompt commandfor %a in (1 2 3) do echo %a has to be written in a batch file as for %%a in (1 2 3) do echo %%a.
Variable names have eight significant characters (I think) and are always stored as upper case (except for the 'windir' variable added by Windows). [Testing under Win95 shows that variable names can be longer than 8 characters and all characters are significant, can't say about Dos 6.] In addition to user-set variables, the entire command line is passed to the batch as the read-only variables %0 to %9. %0 is the actual batch name as typed, the rest are parameters. The shift command moves everything down by one allowing parameters past the ninth to be retrieved (this wipes out the %0 parameter so if used for the batch to call itself it must be saved to another variable).
========================================================================
muscle techtoronto airport taxi downtown