批量 %~1 和 %1 之间的区别?

dit*_*ncy 2 variables batch-file

在批处理中,我有时会看到%~1用于开关和%1. 有什么不同?他们似乎都为我工作。

例子:

if "%~1"=="" echo No variable specified.
Run Code Online (Sandbox Code Playgroud)

if "%1"=="" echo No variable specified.
Run Code Online (Sandbox Code Playgroud)

似乎可以互换工作。

小智 6

解释在两者中For /?call /? 扩展 %1 删除任何周围的引号 (")

    %~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
Run Code Online (Sandbox Code Playgroud)

您可能会发现此链接很有趣运行 .bat 文件的命令