Cmd 是否可以在Windows shell上禁用历史扩展(感叹号)?

Cmd 是否可以在Windows shell上禁用历史扩展(感叹号)?,cmd,escaping,Cmd,Escaping,当我运行这样的命令时: someprogram.exe --param="Value!" Windows shell将把“我的值”中的感叹号视为特殊字符。有没有办法抑制这一点,或者说逃避是唯一的解决办法?(如果我没弄错的话,^!将感叹号转义。) EDIT:奇怪的事情是cmd.exe不进行扩展,但却进行了扩展。我以为它们只是同一个底层shell的两个不同GUI?也许有一个扩展行为的开关?我尝试了SETLOCAL DisableDelayedExpansion,但没有效果。如果使用引号而不是双引号

当我运行这样的命令时:

someprogram.exe --param="Value!"
Windows shell将把“我的值”中的感叹号视为特殊字符。有没有办法抑制这一点,或者说逃避是唯一的解决办法?(如果我没弄错的话,
^!
将感叹号转义。)


EDIT:奇怪的事情是
cmd.exe
不进行扩展,但却进行了扩展。我以为它们只是同一个底层shell的两个不同GUI?也许有一个扩展行为的开关?我尝试了
SETLOCAL DisableDelayedExpansion
,但没有效果。

如果使用引号而不是双引号会怎么样?Windows shell不支持单引号。嗯??试试这个
notepad'c:\temp\test!。txt'
对不起,我的意思是它有时会导致问题,请参见例如。在我的特殊情况下,在传递给的参数周围使用单引号,也只有双引号起作用。同样的问题。。。它快把我逼疯了