el *_*nho 13 vbscript asp-classic
call main()
sub main()
Dim scmd
Set scmd = "c:\windows\system32\cscript.exe //nologo c:\s.vbs"
createobject("wscript.shell").run scmd,0,false
end sub
Run Code Online (Sandbox Code Playgroud)
它给了我错误:
Object required: '[string: "c:\windows\system32\"]' Code 800A01A8
Lan*_*art 13
更新
因为不清楚是否最好指出你的
Object Required问题是由于这一行Run Code Online (Sandbox Code Playgroud)Set scmd = "c:\windows\system32\cscript.exe //nologo c:\s.vbs"这是因为一个对象预期,但要指定一个字符串,通过删除
Set你的代码将工作(如Ekkehard.Horner已经指出的).
以下是我对情况的解释.首先看一下你的代码,它看起来几乎把
WScript.Shell对象的实例化与方法的命令行混合在了一起.Run().这是我第一次尝试分解代码,重新排列然后将其重新组合在一起.
原始答案
你Set scmd应该实例化WScript.Shell(因为Ekkehard.Horner指出你可以用Server.CreateObject("WScript.Shell").Run一次性参考,但我不推荐它).
在.Run()应该由实例化来执行scmd对象,并通过命令行来执行.
这里是我已经改名一些变量(一个例子scmd来cmd举例).
Call main()
Sub main()
'Renamed variables to cmd is your object and cmdline is your file path.
Dim cmd, cmdline
'Instantiate WshShell object
Set cmd = Server.Createobject("WScript.Shell")
'Set cmdline variable to file path
cmdline = "c:\windows\system32\cscript.exe //nologo c:\s.vbs"
'Execute Run and return immediately
Call cmd.Run(cmdline, 0, False)
End Sub
Run Code Online (Sandbox Code Playgroud)
要考虑的事情
在Classic ASP中使用WScript.Shell运行可执行文件时,需要考虑一些事项;
运行命令将使用当前的应用程序池标识执行.
Run将在服务器上执行不在客户端(服务器端)的可执行文件.
小智 -3
我不确定,尝试改变
Set scmd = "c:\windows\system32\cscript.exe //nologo c:\s.vbs"
Run Code Online (Sandbox Code Playgroud)
到
Set scmd = "c:\windows\system32\cscript.exe" //nologo "c:\s.vbs"
Run Code Online (Sandbox Code Playgroud)