2016-06-23 2 views

답변

1

추측 (당신은 필요 실제로 오류 메시지를 보여하다고 생각하지 않았기 때문에) 실제로 연결하는 일없이 연결 연산자 (&)를 사용하는 :

objShell.ShellExecute "C:\batchScript.cmd " & MyPath &, "", "", "runas", 1 
'             ^

을 당신이있어 또한 명령의 일부로 인수를 전달합니다.

스퓨리어스 연결 연산자를 제거하고 실제 인수로 인수를 건네

objShell.ShellExecute "C:\batchScript.cmd", MyPath, "", "runas", 1 

또한 $args[0] 배치 파일에 유효한 변수 아니다.

+0

Windows에서 C : \ batchScript.cmd C : \ Destination을 찾을 수 없으므로 오류가 발생합니다. batchScript.cmd에서 % 1을 (를) 가져 와서 명령 줄 인수를 가져옵니다. – user1954762

+0

오류를 낫지는 않지만 보이지 않는 것처럼 보입니다. 값이 batchScript.cmd ... % 1을 (를) 사용하고 심지어 문을 일시 중지 한 후에도 나타나지 않습니다. – user1954762

+0

'ShellExecute'는 경로 주위에 큰 따옴표를 사용하지 않습니다. –

2

이 내 일이 아니라 내가 정말 코드의 좋은 평화를 찾을 수 :

@echo off 
:: ------- Self-elevating.bat -------------------------------------- 
@whoami /groups | find "S-1-16-12288" > nul && goto :admin 
set "ELEVATE_CMDLINE=cd /d "%~dp0" & call "%~f0" %*" 
findstr "^:::" "%~sf0">temp.vbs 
cscript //nologo temp.vbs & del temp.vbs & exit /b 

::: Set objShell = CreateObject("Shell.Application") 
::: Set objWshShell = WScript.CreateObject("WScript.Shell") 
::: Set objWshProcessEnv = objWshShell.Environment("PROCESS") 
::: strCommandLine = Trim(objWshProcessEnv("ELEVATE_CMDLINE")) 
::: objShell.ShellExecute "cmd", "/c " & strCommandLine, "", "runas" 
:admin ------------------------------------------------------------- 
@echo Running as elevated user. 
@echo Script file : %~f0 
@echo Arguments : %* 
@echo Working dir : %cd% 

헤더로 사용 귀하의 CMD에 대한 그것은 나머지를 할 것입니다.

관련 문제