【发布时间】:2016-05-25 06:30:19
【问题描述】:
这更多是理论上的构造,或者是一个有趣的问题,而不是现实世界的场景——在这种情况下,我会使用批处理文件来防止转义问题。
-
假设我们想以某种方式在 Windows 10 上运行 runas:
runas /user:John "cmd.exe /k echo %path%"这不起作用,因为 %path% 被扩展并且我们得到错误:
正在尝试启动 cmd.exe /k echo C:\Program Files (x... ... RUNAS 错误:无法运行 - cmd.exe /k ech... ... 1734: 数组边界无效。
有可能解决这个问题吗? IE。如何逃脱%? 如果我们尝试
runas /user:John "cmd.exe /k echo ^%path^%"新shell窗口中的输出只是
%path%这不是我们想要的(我们希望将 PATH 变量的值打印到控制台)。
-
假设我们想要一些其他的东西,我们需要在我们的命令中使用 ":
runas /user:John "cmd.exe /k dir c:\Program Files"这不起作用-显然是因为程序和文件之间的空间,出现的新外壳窗口显示两次“未找到文件”。
人们会期望解决这个问题的方法是
runas /user:John "cmd.exe /k dir ^"c:\Program Files^""但这不起作用(runas 打印使用帮助)。问题是为什么?
这里真正的解决方案是使用
\":runas /user:John "cmd.exe /k dir \"c:\Program Files\""这种转义可以在 runas 使用帮助示例部分看到。但这不是转义引号的常用方法,是吗?这里的问题 - 为什么
^"不起作用?
【问题讨论】:
-
当然
runas .... set path是一种作弊方式,让它在新窗口中显示路径:)
标签: cmd escaping windows-10 runas