
This is unlike regular variables which have both leading and trailing %'s such as %variable%, or FOR command variables which use a single leading % on the command line or a double leading %% when used in a batch file. These parameter/ argument variables are always denoted with a single leading % %~nx2 Expand %2 to a file name and extension only %~sp1 Expand %1 to a path shortened to 8.3 characters %~dp1 Expand %1 to a drive letter and path only %~$PATH:1 Search the PATH environment variable and expand %1 to the fully qualified name of the first match found. %~1 Expand %1 removing any surrounding quotes (") %~s1 Change the meaning of f, n, s and x to reference the Short 8.3 name (if it exists.) %~x1 Expand %1 to a file eXtension only. Or if only a path is present, with no trailing backslash, the last folder %~n1 Expand %1 to a file Name without file extension or path - MyFile \utils\ this includes a trailing \ which will be interpreted as an escape character by some commands. %~d1 Expand %1 to a Drive letter only - C: %~f1 Expand %1 to a Fully qualified path name - C:\utils\MyFile.txt We are using the variable %1 (but this works for any argument, including FOR parameters) When an argument is used to supply a filename then the following extended syntax can be applied: This will keep the parameter numbers (%1 %2 etc) consistent. If there is any chance that an argument may be NULL or a zero length string, then surround it with double quotes. If the argument being passed contains any spaces, then surround it with double quotes. Only arguments %1 to %9 can be referenced by number. %* in a batch script refers to all the arguments (e.g. The first item passed is always %1 the second You can get the value of any argument using a % followed by it's numerical position on the command line.
#BATCH READ FILE INTO VARIABLE WINDOWS#
How-to: Pass Command Line arguments (Parameters) to a Windows batch file.Ī command line argument (or parameter) is any value passed into a batch script:Ĭ:> MyScript.cmd January 1234 "Some value"Īrguments can also be passed to a subroutine with CALL:
