繁体   English   中英

在批处理的输入参数中转义“双引号”

[英]Escape “double quotes” inside batch's input parameters

我想在批处理脚本中运行以下内容,它需要一个参数(路径)

runas /user:abc "icacls %1 /grant Everyone:(F) /T"

但是参数%1已经包含一个" (因为它是一个路径,由上下文菜单传递给Send To传递 - 我对此没有多少控制权。)所以当命令在批处理脚本中运行时,它运行如下:

runas /user:abc "icacls "c:\folder" /grant Everyone:(F) /T"

所以,很显然,我需要逃脱"通过创建小号%1 。如何在执行字符串操作%1 ,使得它逃过了引号?

您应该能够使用\\" 是一个网站,其中包含一些您可能会觉得有用的其他转义字符

要执行字符串替换:

set temp=%1
set temp=%temp:"=\"%
echo %temp%

每个回复都包含部分答案。 使用反斜杠和引号组合它们: \\"你得到:

runas /user:abc "icacls \"%~1\" /grant Everyone:(F) /T"

或者你可以加倍(双)引号来逃避它们:

runas /user:abc "icacls ""%~1"" /grant Everyone:(F) /T"

作为附注, ^偶尔用于转义特殊字符,例如<| >|| &&&例如:

echo ^|

但这种情况非常罕见。

SET myPath=%1
SET myPath=%myPath:"=\"%
runas /user:abc "icacls %myPath% /grant Everyone:(F) /T"

编辑 - 变量名称已从path更改为myPath PATH是一个保留的系统变量,不应该用于任何其他目的。

在这种情况下甚至不需要搜索/替换。 只需从你的参数中删除原始引号(使用%~1 ) - 然后你可以再添加你想要的任何内容,例如转义的引号。 在你的例子中:

runas /user:abc "icacls \"%~1\" /grant Everyone:(F) /T"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM