引号
大多数在线批处理脚本都有很多引用问题。
示例和解决方案
例 A
if %var%==abc echo Test
此代码有效 - 当%var%
的内容不包含空格或其他特殊字符时。现在让我们假设%var%
包含 1 个空格。现在 cmd.exe
看到:
if ==abc echo Test
这会导致失败,因为 cmd.exe
不理解这种语法。
解决方案 A.
if "%var%"=="abc" echo Test
使用引号,cmd.exe
将整个%var%
(包括空格和特殊字符)视为仅一个普通字符串。然而,这不是最安全的比较方法。最安全的一个使用 echo
,pipe
和 findstr
。
例 B
cd C:\User\Spaced Name\Spaced FileName.txt
cd
只会将目录更改为 C:\User\Spaced
,因为 cd
只接受一个路径参数。
解决方案 B.
只需在路径周围添加引号,问题就可以解决了。
cd "C:\User\Spaced Name\Spaced FileName.txt"
还有一些使用引号更好地工作的例子,例如 set /a
语句等。但是,当一个用于包含空格或特殊字符的字符串时,使用引号通常是安全的。