Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between %~1 and %1 in batch?

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.

like image 885
ditheredtransparency Avatar asked May 15 '26 15:05

ditheredtransparency


1 Answers

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

like image 133
AMagpie Avatar answered May 17 '26 17:05

AMagpie