我注意到cmd似乎接受了命令末尾的一些字符。例如,所有以下功能都正确:
cls.
cls;
cls(
cls\
cls+
cls=
cls\"whatever"
cls\$
cls\#
而这些不是:
cls'
cls$
cls)
cls-
cls#
cls\/
有人知道为什么会这样吗?
提前致谢。
答案 0 :(得分:1)
这取决于批处理解析器。
;,=
是一般批处理分隔符,因此您可以将它们附加/添加到大多数命令中而不会生效。
;,,= ,=; echo hello
;,cls,;,,
.
点可以附加到大多数命令,因为解析器将尝试查找名为cls
(不带扩展名)cls.exe
cls.bat
的文件,以及何时没有找到任何东西然后它需要内部命令。
开始括号也是解析器无误删除的特殊字符。
\
反斜杠用作路径分隔符,因此有时它可以工作,但有时甚至可以更改命令。
cls\..\..\..\windows\system32\calc.exe