2

我注意到 cmd 似乎在命令末尾接受一些字符。例如以下所有功能正确:

cls.
cls;
cls(
cls\
cls+
cls=
cls\"whatever"
cls\$
cls\#

而这些不会:

cls'
cls$
cls)
cls-
cls#
cls\/

有人知道为什么会这样吗?

提前致谢。

4

1 回答 1

1

这取决于批处理解析器。

;,=是通用的批处理分隔符,因此您可以将它们附加/附加到大多数命令中而没有效果。

;,,=  ,=; echo hello
;,cls,;,,

.点可以附加到大多数命令中,因为解析器将尝试查找名为 (without extension) 的文件,clscls.exe cls.bat没有找到时,它会使用内部命令。

左括号也是解析器删除而不会出错的特殊字符。

\反斜杠用作路径分隔符,因此有时它可以工作,但有时您甚至可以更改命令。

cls\..\..\..\windows\system32\calc.exe

于 2013-08-17T19:19:29.293 回答