Я пытаюсь сделать функцию, которая выполняет команды, как это:CreateObject («Wscript.Shell») во всем мире не работает
Set fso = CreateObject ("Scripting.FileSystemObject")
Set stdout = fso.GetStandardStream (1)
print runCommand("git --help")
function runCommand(commandStr)
set objShell = CreateObject("Wscript.Shell")
Set objExec = objShell.Exec(commandStr)
Do Until objExec.Status
Wscript.Sleep 10
Loop
runCommand = objExec.StdOut.ReadAll()
end function
sub print(str)
stdout.WriteLine str
end sub
Это прекрасно работает, но я хочу использовать objShell на более высоком уровень, поэтому я решил сделать objShell глобальными:
set objShell = CreateObject("Wscript.Shell")
Set fso = CreateObject ("Scripting.FileSystemObject")
Set stdout = fso.GetStandardStream (1)
print runCommand(objShell.CurrentDirectory)
print runCommand("git --help")
function runCommand(commandStr)
Set objExec = objShell.Exec(commandStr)
Do Until objExec.Status
Wscript.Sleep 10
Loop
runCommand = objExec.StdOut.ReadAll()
end function
sub print(str)
stdout.WriteLine str
end sub
Однако, теперь, когда я запускаю его я получаю сообщение об ошибке:
WshShell.Exec: Access is denied.
И я t ссылается на строку set objShell = CreateObject("Wscript.Shell")
. Если я попытаюсь сделать две разные переменные objShell и objShell2, я получаю ту же ошибку. Как это разрешить?
В этом случае вам нужно избавиться от «set objShell = CreateObject (« Wscript.Shell »)» в начале функции! Не делайте этого дважды! – duDE
@duDE жаль, что это был тип-о. удален. Поведение все еще терпит неудачу. И я пропустил функцию печати, которую я также добавил. –