我已经看到cmd批处理脚本使用方形符号来包围变量.例如:
@echo off
if [%1]==[] (
echo no parameter entered
) else (
echo param1 is %1
)
Run Code Online (Sandbox Code Playgroud)
这样做的目的是什么?
Ste*_*han 11
它用于正确的语法.试想一下,如果变量是空的,你想检查一下:
if %var%== echo bla
Run Code Online (Sandbox Code Playgroud)
显然会失败.(语法错误)
代替:
if "%var%"=="" echo bla
Run Code Online (Sandbox Code Playgroud)
工作良好.
另一个"坏事":你想检查一个变量,但它可能是空的:
if %var%==bla echo bla
Run Code Online (Sandbox Code Playgroud)
如果%var%不为空,则效果很好.但如果它是空的,该行将被解释为:
if ==bla echo bla
Run Code Online (Sandbox Code Playgroud)
显然是一个语法问题.但
if "%var%"=="bla" echo bla
Run Code Online (Sandbox Code Playgroud)
将被解释为
if ""=="bla" echo bla
Run Code Online (Sandbox Code Playgroud)
正确的语法.
而不是"
你可以使用其他字符.有些人喜欢[%var%]
,
有些人使用!
或.
有些人只使用一个字符而不是围绕字符串if %var%.==.
.最常见的是围绕着"
(因为如果var包含一个不带引号的毒药字符,例如&.它会不会失败),但这取决于个人的阵风.
*)感谢dbenham,这是一个非常重要的信息