Reputation: 595
In batch i sometimes see %~1
used for switches and also %1
. What's the difference? They both seem to work for me.
Example:
if "%~1"=="" echo No variable specified.
and
if "%1"=="" echo No variable specified.
seem to work interchangibly.
Upvotes: 9
Views: 14093
Reputation: 206
The explanation is in both For /?
and call /?
expands %1 removing any surrounding quotes (").
%~1 - expands %1 removing any surrounding quotes (")
%~f1 - expands %1 to a fully qualified path name
%~d1 - expands %1 to a drive letter only
%~p1 - expands %1 to a path only
%~n1 - expands %1 to a file name only
%~x1 - expands %1 to a file extension only
%~s1 - expanded path contains short names only
%~a1 - expands %1 to file attributes
%~t1 - expands %1 to date/time of file
%~z1 - expands %1 to size of file
%~$PATH:1 - searches the directories listed in the PATH
environment variable and expands %1 to the fully
qualified name of the first one found. If the
environment variable name is not defined or the
file is not found by the search, then this
modifier expands to the empty string
You may find this link interesting Command to run a .bat file
Upvotes: 16