我有一个用VBScript编写的框架.在这个框架内部的一些函数中,函数的参数在If语句中检查Nothing,然后执行一些动作.使用Javascript编写的框架的代码.所以我需要传递Nothing来执行某些操作.在IE8和早期版本中工作的下一个方法:
<script type="text/vbscript">
Function Test(val)
If (IsNull(val)) Then
Test = "Null"
ElseIf (IsObject(val)) Then
If (val Is Nothing) Then
Test = "Nothing"
End If
End If
End Function
Dim jsNothing
Set jsNothing = Nothing
msgBox(Test(jsNothing))
msgBox(Test(Null))
</script>
<script type="text/javascript">
alert(Test(jsNothing));
</script>
Run Code Online (Sandbox Code Playgroud)
在IE <9中输出将:Nothing,Null,Nothing.
在IE9中:没有,Null,Null.
如何在IE9中将Nothing从Javascript传递给VBScript?
对不起,我知道这很丑,但我被困了.并讨厌VBScript.
编辑: 有一个框架功能的例子.我无法改变它,因为它在应用中被广泛使用.
Function ExampleFunction(val)
If (val Is Nothing) Then
ExampleFunction = 1
Else
ExampleFunction = 0
End If
End Function
Run Code Online (Sandbox Code Playgroud)
更新
退出工作.找到一个更好的.
我想使用VBScript来捕获错误并记录它们(即错误"记录某些内容")然后恢复脚本的下一行.
例如,
On Error Resume Next 'Do Step 1 'Do Step 2 'Do Step 3
当在步骤1发生错误时,我希望它记录该错误(或用它执行其他自定义功能),然后在步骤2恢复.这可能吗?我该如何实现它?
编辑:我可以这样做吗?
On Error Resume myErrCatch 'Do step 1 'Do step 2 'Do step 3 myErrCatch: 'log error Resume Next
我将此脚本保存在"test.vbs"中:
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.OpenTextFile(workFolder &"\test.txt", 2, True)
File.Write "testing"
File.Close
Set File = Nothing
Set FSO = Nothing
Set workFolder = NothingRun Code Online (Sandbox Code Playgroud)
当我运行脚本时,我想传递"workFolder"变量的值.
我怎样才能做到这一点?我可以做吗?像"cscript test.vbs workFolder:'C:\ temp \'"之类的东西?
额外问题:是否需要使用"Set workFolder = Nothing"清理传递的变量,或者VBSCript在终止时自动执行此操作?也许"Set File = Nothing"和"Set FSO = Nothing"也是不必要的?如果您知道这两个问题的答案,请告诉我.
我已经能够在Classic ASP(VBScript)中找到用于生成 JSON 的数量众多的库,但我还没有找到任何用于解析的 ANY .
我想要一些我可以传递JSON字符串并返回某种类型的VBScript对象(Array,Scripting.Dictionary等)的东西
我需要一个可以在VBScript和.NET中使用的正则表达式,它只返回字符串中的数字.
例如,以下任何"字符串"应仅返回1231231234
这将在电子邮件解析器中用于查找客户可能在电子邮件中提供的电话号码并进行数据库搜索.
我可能错过了类似的正则表达式,但我确实在regexlib.com上搜索.
[编辑] - 在设置musicfreak的答案后添加了由RegexBuddy生成的代码
VBScript代码
Dim myRegExp, ResultString
Set myRegExp = New RegExp
myRegExp.Global = True
myRegExp.Pattern = "[^\d]"
ResultString = myRegExp.Replace(SubjectString, "")
Run Code Online (Sandbox Code Playgroud)
VB.NET
Dim ResultString As String
Try
Dim RegexObj As New Regex("[^\d]")
ResultString = RegexObj.Replace(SubjectString, "")
Catch ex As ArgumentException
'Syntax error in the regular expression
End Try
Run Code Online (Sandbox Code Playgroud)
C#
string …Run Code Online (Sandbox Code Playgroud) 如何在VBscript中传递和访问命令行参数?
我正在编写Windows批处理文件,并希望将某些内容复制到桌面.我想我可以用这个:
%USERPROFILE%\桌面\
但是,我在想,这可能只适用于英语操作系统.有没有办法可以在批处理文件中执行此操作,该文件适用于任何国际化版本?
UPDATE
我尝试了以下批处理文件:
REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop
FOR /F "usebackq tokens=3 skip=4" %%i in (`REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop`) DO SET DESKTOPDIR=%%i
FOR /F "usebackq delims=" %%i in (`ECHO %DESKTOPDIR%`) DO SET DESKTOPDIR=%%i
ECHO %DESKTOPDIR%
Run Code Online (Sandbox Code Playgroud)
得到了这个输出:
S:\>REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Desktop
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
Desktop REG_EXPAND_SZ %USERPROFILE%\Desktop
S:\>FOR /F "usebackq tokens=3 skip=4" %i in (`REG QUERY "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folder
s" /v Desktop`) DO SET DESKTOPDIR=%i
S:\>FOR /F "usebackq … Windows XP/Vista/2003/2008中内置的ZIP压缩是否能够编写脚本?我必须从BAT/CMD文件中调用哪些可执行文件?或者是否可以使用VBScript执行此操作?
我来了一些VBScript示例,我On Error Resume Next在脚本的开头基本上看到了该语句.
它有什么作用?
vbscript ×10
windows ×3
arguments ×1
asp-classic ×1
batch-file ×1
c# ×1
command-line ×1
console ×1
desktop ×1
execution ×1
javascript ×1
json ×1
localization ×1
output ×1
parameters ×1
powershell ×1
regex ×1
scripting ×1
vb.net ×1
wsh ×1
zip ×1