lag*_*lex 22 windows batch-file
我想在批处理脚本中运行以下内容,它需要一个参数(路径)
runas /user:abc "icacls %1 /grant Everyone:(F) /T"
Run Code Online (Sandbox Code Playgroud)
但是参数%1已经包含了一个" (因为它是一个路径,由上下文菜单的Send To传递 - 我对此没有多少控制权).因此,当命令在批处理脚本中运行时,它会像这样运行:
runas /user:abc "icacls "c:\folder" /grant Everyone:(F) /T"
Run Code Online (Sandbox Code Playgroud)
所以显然我需要逃避由它"创建的s %1.如何执行字符串操作%1以使其转义引号?
nic*_*ick 25
您应该能够使用\" 这是一个包含一些您可能会觉得有用的其他转义字符的站点
要执行字符串替换:
set temp=%1
set temp=%temp:"=\"%
echo %temp%
Run Code Online (Sandbox Code Playgroud)
每个回复都包含部分答案.使用反斜杠和引号组合它们:\"您得到:
runas /user:abc "icacls \"%~1\" /grant Everyone:(F) /T"
Run Code Online (Sandbox Code Playgroud)
或者你可以加倍(双)引号来逃避它们:
runas /user:abc "icacls ""%~1"" /grant Everyone:(F) /T"
Run Code Online (Sandbox Code Playgroud)
作为一个方面说明^为转义特殊字符,如偶尔有用<,|,>,||,&&,和&例如:
echo ^|
Run Code Online (Sandbox Code Playgroud)
但这种情况非常罕见.
| 归档时间: |
|
| 查看次数: |
48803 次 |
| 最近记录: |