我想在批处理脚本中运行以下参数(path)
runas /user:abc "icacls %1 /grant Everyone:(F) /T"
但是参数%1
已经包含了一个"
(因为它是一个path,通过上下文菜单的Send To传递 – 我没有太多的控制权)所以当命令在批处理脚本中运行时,它的运行方式如下:
runas /user:abc "icacls "c:\folder" /grant Everyone:(F) /T"
所以很显然,我需要逃避由%1
创build的"
我如何执行string操作超过%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"