我希望能在批处理脚本中运行以下代码,该代码需要一个参数(路径)。
runas /user:abc "icacls %1 /grant Everyone:(F) /T"
但是参数%1
已经包含一个"
(因为它是通过上下文菜单的“发送到”传递的路径——我对此没有太多控制权)。
因此,当批处理脚本运行时,它会像这样运行:
runas /user:abc "icacls "c:\folder" /grant Everyone:(F) /T"
显然,我需要转义%1
创建的"
。如何对%1
进行字符串操作,使其转义引号?
""
而不是\"
?我发现批处理文件只能用""
进行转义,而\"
版本仅适用于非批处理程序(如用 C++ 或某些识别 \ 作为转义字符的语言编写的 runas)。因此,当将变量传递给非批处理程序时,我们只使用\"
,而在传递给其他批处理脚本(或批处理函数(例如CALL:function "parameterWith""EscapedQuote"
))时则使用""
。 - Mr_MoneybagsSET "var1=key=\"val&ue!\""
,你会得到错误信息:'ue!\""' is not recognized as an internal or external command, operable program or batch file.
但是""
可以正常工作。 - Mr_Moneybags&
应该被转义为^&
。我在想,也许""
告诉批处理文件“不要将此字符串中的任何内容视为特殊字符”,类似于在C#中在字符串开头放置@
。但我不确定,因为我已经很久没有使用批处理了。 - nick