ditheredtransparency
ditheredtransparency

Reputation: 595

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.

Upvotes: 9

Views: 14093

Answers (1)

AMagpie
AMagpie

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

Related Questions