标签: vbscript

如何从ASP Classic中的变量调用方法?

例如,我如何在下面运行me.test?

myvar = 'test'
me.myvar
Run Code Online (Sandbox Code Playgroud)

ASP查找方法"myvar"但找不到它.在PHP中,我可以简单地说$ me - > $ myvar,但ASP的语法不区分变量和方法.建议?

与此密切相关,ASP Classic中是否有method_exists函数?

提前致谢!

编辑:我正在写一个验证类,并希望通过管道分隔字符串调用方法列表.

例如,要验证名称字段,我会调用:

validate("required|min_length(3)|max_length(100)|alphanumeric")
Run Code Online (Sandbox Code Playgroud)

我喜欢有一条线来显示给定字段的所有验证方式.并且字符串的每个管道分隔部分是方法的名称.

如果您有更好的设置建议,我会全力以赴!

vbscript late-binding asp-classic

2
推荐指数
1
解决办法
3985
查看次数

如何使用VBScript检查MS Word是否正在运行

我们有一个运行MS Word(隐藏)以打印文档的应用程序。

如果其中一台打印机有问题,则在等待后台处理程序返回“排队”消息时,Word将挂起。

我们发现如果使Word可见(例如,通过在Excel中使用VBA GetObjectoWordApp.visible=true),该过程将继续打印其他文档而不会出现问题。

我们希望通过对正在运行的进程中的Word进行VBScript检查来使其更加自动化,如果找到它,使其可见,等待几秒钟,将其隐藏,然后退出...

但是我有一个问题,如果VBScript GetObject函数尚未运行,它会实例化Word。

如何在不创建单词实例的情况下使用VBScript检查该单词是否正在运行?

这是我在VBScript文件中拥有的代码:

dim oWord, WScriptShell

set oWord = getobject("", "Word.Application")
set WScriptShell = CreateObject("WScript.Shell")

if isobject(oWord)  then 'and oWord.Documents.count>0
    wscript.echo("Word is running")
    oWord.visible=true
    WScript.Sleep 1000
    oWord.visible=false
else
    wscript.echo("Word not running")
end if
Run Code Online (Sandbox Code Playgroud)

所以我应该使用什么来检查word是否在运行而不创建它的实例?

vbscript process

2
推荐指数
1
解决办法
2994
查看次数

远程更改Windows 7壁纸

我试图远程更改在WORKGROUP环境中运行Win 7的大约50台计算机上的壁纸.

我拥有所有这些的本地管理员权限,而且他们正在运行一个代理(Faronics),可以让我远程推送.bat .exe .msi .vbs和.ps1.

只是想知道是否有任何应用程序允许我远程执行此操作,或者如果没有,是什么是将我的图像添加到这些计算机并将其设置为默认壁纸的最简单方法?

windows vbscript desktop-wallpaper batch-file

2
推荐指数
2
解决办法
4万
查看次数

使用VbScript将Hex转换为String

这是一个将字符串转换为十六进制代码的脚本:

strString = "test"
strHex =""
For i=1 To Len(strString)
    strHex = strHex & " "  & Hex(Asc(Mid(strString,i,1)))
Next

strHex = Right(strHex,Len(strHex)-1)

WScript.Echo strHex
Run Code Online (Sandbox Code Playgroud)

我想做一个将十六进制转换为字符串的反向操作,这可能使用vbscript吗?

vbscript

2
推荐指数
1
解决办法
1万
查看次数

vbscript msxml12.XMLHTTP错误处理

我使用以下vbscript代码下载网页:

Dim oXML
Set oXML = CreateObject("msxm12.XMLHTTP")
oXML.Open "GET", "mysite.com", False
oXML.Send
Run Code Online (Sandbox Code Playgroud)

如果没有这样的网站,我会报错 80004005, Unspecified error at line "oXML.Open ..."

我该如何处理vbscript中的此错误?我想捕获此错误,并显示msgbox和我的错误,即网页不可用。

vbscript xmlhttprequest

2
推荐指数
1
解决办法
1万
查看次数

Asp条件语法

我正在为一个项目使用一些经典的asp.我运行了一些我多次不熟悉的语法.

这是一个例子:

if Request.QueryString("viewpopup") <> "" then
        queryString = "?viewpopup=" & Request.QueryString("viewpopup")
    end if
Run Code Online (Sandbox Code Playgroud)

我试图识别的是<>和""在本声明的第一行中的作用.

vbscript asp-classic

2
推荐指数
1
解决办法
90
查看次数

VBScript检查进程是否正在运行(使用通配符)

我需要检查某个进程是否正在运行。这里的问题是,每次触发时,我的进程名称可能会有所不同。

进程名称趋势如下所示:_process3452 _process2345 _process1234

如您所见,_process是相同的。每次启动时都会添加一个随机数。如果知道确切的进程名称,我知道如何检查进程。但是,我不知道如何使用通配符。

有人可以帮我弄这个吗。

vbscript

2
推荐指数
1
解决办法
426
查看次数

为什么FileExists不支持通配符?

考虑这个示例VBScript片段:

Dim fs
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.FileExists("D:\Folder\File*.ext") Then ' Finds nothing!
  fs.CopyFile "D:\Folder\File*.ext", "D:\OtherFolder\"
  fs.Deletefile "D:\Folder\File*.ext"
End If
Run Code Online (Sandbox Code Playgroud)

FileExists方法证明不支持通配符(*?).没有FolderExists.我预计wildards只是工作,因为他们工作的优良所有类似的方法在FileSystemObject:CopyFile,CopyFolder,MoveFile,MoveFolder,DeleteFile,DeleteFolderGet*文件名处理方法一样GetAbsolutePathName.

当然有办法解决这个问题,比如GetFolder迭代它的文件.但FileExists本来会更具可读性,方便性,自然性和一致性.

fs.FileExists不一致感觉就像一个API设计问题.可能是什么原因?背后有什么想法吗?

vbscript api-design filesystemobject

2
推荐指数
1
解决办法
2618
查看次数

VBScript是否允许在函数调用中使用命名参数?

我试图运行以下代码VBScript但它没有编译最后一个语句.是因为VBScript不允许命名参数吗?

Filename_Argument = WScript.Arguments(0)
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set objWorkbook = objExcel.Workbooks.Add()
Workbooks.OpenText Filename:=Filename_Argument, Origin _
        :=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
        , Comma:=False, Space:=False, Other:=True, OtherChar:="|", FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True
Run Code Online (Sandbox Code Playgroud)

vbscript named-parameters

2
推荐指数
1
解决办法
1459
查看次数

使用经典ASP VBScript时无法获取原始POST数据

我已经尝试了两天来设置满足第三方提供商要求的端点。他们将通过HTTPS POST向我们发送有关业务对象状态的更新,请求的内容将为JSON。不幸的是,它现在必须用VBScript编写。

目前,我无法获得他们发送给我的请求的原始内容,因此我根本无法处理它。

我创建了一个简单的终结点(raw-form.asp)和两个测试页来演示该问题。首先,我使用HTML表单设置了一个简单的测试HTML页面(raw-form-test1.asp),它可以正常工作。第二个测试页(raw-form-test2.asp)使用将内容发送到端点WinHttpRequest。使用此功能时,数据不存在。我正在尝试通过进行获取Request.Body

原始形式的asp:

<%
    Dim post : post = Request.Body
    Response.ContentType = "text/plain"
    Response.Write "Your " & Request.ServerVariables("REQUEST_METHOD") & " data was: " & post
%>
Run Code Online (Sandbox Code Playgroud)

raw-form-test1.asp:

<!DOCTYPE html>
<html>
    <body>
        <form action="raw-form.asp" method="post">
            <p><textarea name="data"></textarea></p>
            <p><input type="submit"></p>
        </form>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

raw-form-test2.asp:

<%
    Dim data : data = Request.Form("data")
    Dim resp : resp = ""

    If data <> "" Then
        Dim http : Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
        http.Open "post", "http://localhost:8080/raw-form.asp"
        http.Send data
        http.WaitForResponse(10)
        resp …
Run Code Online (Sandbox Code Playgroud)

vbscript http-post asp-classic

2
推荐指数
1
解决办法
3813
查看次数