2016-06-23 9 views
1

管理者として1つのコマンドを実行しようとしていますが、エラーが発生しています。以下はコードです。管理者としてスクリプトを引数を渡して実行する

のVBScript:

MyPath ="C:\Destination" 
Dim objShell 
Set objShell = CreateObject("Shell.Application") 
objShell.ShellExecute "C:\batchScript.cmd " & MyPath &, "", "", "runas", 1 

batchScript.cmd

echo %1 
psfile %1 -c 

答えて

1

ワイルド推測(あなたが実際にエラーメッセージを表示することが必要と認めるなかったので):あなたが実際に連結するために何かすることなく、連結演算子(&)を使用している:

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

、あなたがしていますコマンドの一部として引数も渡します。

スプリアス連結演算子を削除し、実引数として引数を渡す:

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

はまた、$args[0]は、バッチファイルで有効な変数ではありません。

+0

これは、ウィンドウがC:\ batchScript.cmd C:\ Destinationを見つけることができないため、エラーをスローします...%1をbatchScript.cmdの中で使用して、コマンドライン引数を取得しました – 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のためにそれは残りをするでしょう。

関連する問題