某些符号不影响cmd命令,而其他符号则不会

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

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

而这些不:

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

有人知道为什么会发生这种情况吗?

提前致谢。

这取决于批解析器。

;,=是一般的批量分隔符,所以你可以将它们附加到最前面的命令中而不起作用。

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

. 点可以被追加到最多的命令,因为解析器将尝试找到一个名为cls (没有扩展名)的文件cls.exe cls.bat ,当没有发现任何东西时,它采取内部命令。

左括号也是解析器无误地移除的特殊字符。

\反斜杠用作路径分隔符,所以有时候它可以工作,但有时甚至可以改变命令。

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