Batch file 运行方式提示输入凭据

Batch file 运行方式提示输入凭据,batch-file,cmd,runas,Batch File,Cmd,Runas,我正在尝试编写一个批处理脚本,该脚本将为任何给定的windows服务(使用explorer.exe进行测试)为运行时可以输入的任何给定用户执行RunAs。我现在拥有的是这个 set /p Var1="Domain = " set/p Var2=“Username=” set/p Var3=“要打开的服务=“ RunAs/用户:%Var1%\%Var2%%Var3%/separate 在命令行上,这似乎可以正常工作(使用编码值而不是变量),但在批处理文件中,它似乎只是重复自己,没有打开指定的内容

我正在尝试编写一个批处理脚本,该脚本将为任何给定的windows服务(使用explorer.exe进行测试)为运行时可以输入的任何给定用户执行RunAs。我现在拥有的是这个

set /p Var1="Domain = "
set/p Var2=“Username=”

set/p Var3=“要打开的服务=“

RunAs/用户:%Var1%\%Var2%%Var3%/separate

在命令行上,这似乎可以正常工作(使用编码值而不是变量),但在批处理文件中,它似乎只是重复自己,没有打开指定的内容(它甚至不提示输入密码,所以我只能假设它甚至没有尝试)。知道它为什么会循环吗?我能做些什么来阻止它


Cheers

/separate
不是从
运行方式的切换。所以

RUNAS /USER:"%Var1%\%Var2%" "%Var3%"
一切都会好起来的。如果
/separate
%Var3%
程序的参数,请使用:

RUNAS /USER:"%Var1%\%Var2%" "%Var3% /seperate"

您还可以在脚本末尾添加
PAUSE
,以便在“调试”时检查结果。

Hi@Gary Barnett我不久前创建了类似的东西

这是一个例子

@ECHO OFF
set /P Domainn=Enter Domain Name: 
set /P Usern=Enter Username: 
set userunas=runas /user:%domainn%\%usern% "

:optionmenu
CLS
ECHO 1 - Control.exe
ECHO 2 - MSinfo32.exe
ECHO 3 - Explorer.exe    
ECHO q - Quit
ECHO.
set /P optionnum=Enter command number: 
GOTO option%optionnum%

:option1
%userunas%control.exe
goto optionmenu

:option2
%userunas% %commonprogramfiles%\micros~1\MSInfo\msinfo32.exe"
goto optionmenu

:option3
%userunas%explorer.exe
goto optionmenu

:optionq
EXIT

注意:您必须以管理员身份运行批处理文件(右键单击->以管理员身份运行),否则它将无法工作。

是否出现任何错误?我认为您的问题可能是因为您没有将变量用引号括起来(如果它们的值有空格,那么这就是您的问题)