这更像是理论构造,或者是一个有趣的问题,而不是真实的场景--在这种情况下,我会使用批处理文件来防止转义问题。
\":
runas /user:John "cmd.exe /k dir \"c:\Program \“
这种转义可以在runas使用帮助示例一节中看到。但这不是一种常见的逃避引语的方法,对吗?这里的问题是--为什么^"不能工作?发布于 2016-02-14 11:33:00
我们涉及三个实体:
cmd外壳,在其中键入runas ...runas.exe启动了一个新的进程,等等。cmd外壳,这是runas被告知要执行的键入runas ... "cmd.exe /k echo %path%"时
%path%并扩展它runas接受展开的命令,以参数的形式启动内部shell键入runas ... "cmd.exe /k echo ^%path^%"时
^%path^%,并将插入符号解释为转义百分比符号,因此它不会展开path并保留插入符号。runas将运行的命令视为cmd.exe /k echo %^path^%echo ^%path^%,而在新窗口中可以看到%path%。因此,当插入符号在引号中时,它们将被保留。但是如果不使用引号,runas就不能工作--命令必须被看作是一个参数。该怎么办呢?
一种方法是使用批处理文件,正如您所说的。
另一种方法是使用不同的环境变量:
set aa=echo ^%path^%
runas /user:rpres "cmd.exe /k %aa%"set命令中没有引号的插入符号,并生成一个值为echo %path%的变量。runas行上展开的变量,并对其进行扩展。就一次。内部%path%未展开cmd.exe /k echo %path%,而runas则是echo %path%。它扩展了这条路。您可以在新窗口中看到展开的路径。最后一种方法是在转义插入符号之前从引号中提取出来:runas.exe ... "cmd.exe /k echo "^%path^% --重要的是,没有不在引号中的空格!
runas行中没有引号的插入符号,并在移除插入符号时转义百分比符号。cmd.exe /k echo %path%,而runas则是echo %path%。它扩展了这条路。您可以在新窗口中看到展开的路径。请注意,在完成转义百分比后,您可以“回到引号中”。例如,runas /user:rpres "cmd.exe /k echo here is my path :::"^%path^%":::"将显示here is my path,后面是用三个冒号括起来的路径。
https://stackoverflow.com/questions/35390865
复制相似问题