mid*_*ite 1 windows command-line environment-variables batch-file cmd.exe
特别是,我在理解以下行中的连字符时遇到问题,这些行来自维基教科书
if not -%1-==-- echo Argument one provided
if -%1-==-- echo Argument one not provided & exit /b
Run Code Online (Sandbox Code Playgroud)
要测试变量是否存在或定义,基本上有两种方法,我从这里学到:
IF DEFINED MyVar (ECHO MyVar IS defined) ELSE (ECHO MyVar is NOT defined)
IF "%MyVar%"=="" (ECHO MyVar is NOT defined) ELSE (ECHO MyVar IS defined)
Run Code Online (Sandbox Code Playgroud)
那么,(1) %1 参数周围的连字符和 (2) == 符号后面的连字符是什么意思?
考虑这个
C:\>if not -%1-==-- echo Argument one provided
Argument one provided
C:\>if not P%1P==PP echo Argument one provided
Argument one provided
Run Code Online (Sandbox Code Playgroud)
很明显,减号/连字符只是为了方便指定空值。该特定符号在该表达式中没有特殊含义 - 它被视为任何其他非特殊字符。
我们可以添加空格以更清楚地表明==
操作符没有被周围的字符修改
C:\>if not P%1P == PP echo Argument one provided
Argument one provided
Run Code Online (Sandbox Code Playgroud)
一般来说,最好使用更多人会更直接理解的传统方法(例如使用引号)。
C:\>if not "%1"=="" echo Argument one provided
Argument one provided
Run Code Online (Sandbox Code Playgroud)
对于 DOS 和 Windows 的早期版本,我相信使用引号存在一些问题(我不记得了)导致人们以这种方式使用可打印字符。例如,我还没有尝试过 %1 包含引号的情况。
归档时间: |
|
查看次数: |
4144 次 |
最近记录: |