runas不允许复杂的参数?

时间:2012-11-13 16:38:16

标签: vbscript escaping arguments command-line-arguments runas

我有一个应用程序,我试图在Windows 7和Windows XP瘦客户端上运行升级,但我似乎无法让runas.exe cmd行正确。我知道我需要反斜杠转义字符,因此runas正确解释了空格。这在运行runas时使用反斜杠转义的单个参数时有效。这个场景是我发现的一个解决方案而且它有效但是,我需要发送多个参数,这些参数都是用反斜杠转义的,因为文件路径中的空格会等等。这里有一些例子:

这些工作正如预期的那样,将提示输入管理员密码:

runas.exe /user:Administrator "C:\update_andon.exe autosetup /kiosktype:\"Andon Kiosk"\

runas.exe /user:Administrator "C:\update_andon.exe autosetup /directory:\"C:\Program Files\CIMS_Andon\Kiosk"\

当我开始添加我需要的其他参数(如下面的行)时,我会收到runas帮助文本,表明存在问题:

runas.exe /user:administrator "C:\update_andon.exe autosetup /kiosktype:\"Andon Kiosk"\ /exename:\"eAndonKiosk.exe"\ /directory:\"C:\Program Files\CIMS_Andon\Kiosk"\ /repository:\"\\domain\sat\shared\repository\andon kiosk"\"

一个解决方案是一个接一个地运行每个参数,但我不认为这是一个解决方案,因为它是一个解决方法。我是否错过了将反斜杠与各种参数混合在一起的方式?我在某个地方错过了更多的引用吗?

由于

2 个答案:

答案 0 :(得分:5)

在您的跟踪引号上看起来您没有正确转义它们。反斜杠用于逃避解释器查看下一个字符。对于您的尾随引号,您在引号后面加上反斜杠,这是不正确的。

来自帮助的

示例

"notepad \"my file.txt\""

请注意,反斜杠在引号之前。您甚至可以尝试使用降价在堆栈交换中键入答案,因为您必须输入双\才能显示单个反斜杠

原始代码

runas.exe /user:administrator "C:\update_andon.exe autosetup /kiosktype:\"Andon Kiosk"\ /exename:\"eAndonKiosk.exe"\ /directory:\"C:\Program Files\CIMS_Andon\Kiosk"\ /repository:\"\\domain\sat\shared\repository\andon kiosk"\"

更正后的代码

runas.exe /user:administrator "C:\update_andon.exe autosetup /kiosktype:\"Andon Kiosk\" /exename:\"eAndonKiosk.exe\" /directory:\"C:\Program Files\CIMS_Andon\Kiosk\" /repository:\"\\domain\sat\shared\repository\andon kiosk\""

引用

  1. Quotes, Escape Characters, Delimiters - Windows CMD - SS64.com
  2. Batch files - Escape Characters

答案 1 :(得分:1)

规范解决方案:将命令写入批处理脚本并通过runas运行脚本。