我使用WScript自动执行某些任务,使用WScript.Shell调用外部程序.
但是,现在它不会等待外部程序完成,而是继续前进.这会导致问题,因为我有一些任务依赖于其他完成的任务.
我使用的代码如下:
ZipCommand = "7za.exe a -r -y " & ZipDest & BuildLabel & ".zip " & buildSourceDir
Set wshShell = WScript.CreateObject("Wscript.Shell")
wshShell.run ZipCommand
Run Code Online (Sandbox Code Playgroud)
有没有办法这样做,所以它阻塞,直到shell执行程序返回?
实际上有很多例子,我使用过其中一个例子.但它是异步的,我的意思是它不等待我打电话完成的功能.
function ProcessSend()
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.4.0")
Set oXMLDoc = CreateObject("MSXML2.DOMDocument")
oXMLHTTP.onreadystatechange = getRef("HandleStateChange")
strEnvelope = "callNo="&callNo&"&exp="&exp
call oXMLHTTP.open("POST","http://localhost:11883/ServiceCall.asmx/"&posFirm,true)
call oXMLHTTP.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
call oXMLHTTP.send(strEnvelope)
end function
Sub HandleStateChange
if(oXMLHTTP.readyState = 4) then
dim szResponse: szResponse = oXMLHTTP.responseText
call oXMLDoc.loadXML(szResponse)
if(oXMLDoc.parseError.errorCode <> 0) then
'call msgbox("ERROR")
response = oXMLHTTP.responseText&" "&oXMLDoc.parseError.reason
'call msgbox(oXMLDoc.parseError.reason)
else
response = oXMLDoc.getElementsByTagName("string")(0).childNodes(0).text
end if
end if
End Sub
Run Code Online (Sandbox Code Playgroud)
我在一个javascript函数中调用ProcessSend函数.它连接到webservice,并返回"response"变量.但是我的javascript函数不会等待ProcessSend函数的结果.如何让它同步?
使用FileSystemObject时,您可以使用路径"."来引用运行脚本的目录.是否可以更改FileSystemObject认为当前目录的内容,以便您可以使用".".其他目录的路径语法?
例:
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.GetFolder(".") ' Returns the current directory
Set f2 = fso.GetFolder(".\backup") ' Returns the "backup" directory under the current directory
Run Code Online (Sandbox Code Playgroud)
作为简化示例,是否有一种方法来调用fso,以便fso.GetFolder(".")调用返回备份目录?
我正在使用vbscript从db2中提取数据并写入文件.写入文件如:
Set objTextFile = objFSO.CreateTextFile(sFilePath, True, True)
Run Code Online (Sandbox Code Playgroud)
以unicode创建文件.但那是xml文件,它使用UTF-8.因此,当我用MS XML Notepad打开xml文件时,它会抛出错误:'十六进制值0x00是无效字符'
所以我用TextPad打开这个文本文件并保存为UTF-8.之后,XML打开没有任何问题.我可以通过vbScript将文件从Unicode转换为UTF-8吗?
我正在使用VBScript复制Windows 7/8添加删除程序小程序.我已经让脚本包含所有正确的条目,但我无法让它包含Windows显示的所有正确的附加信息.
例如:Windows显示带有日期的"已安装"列.在某些情况下,它从相关的注册表键获取这些,如:
HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall\InstallDate
HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\InstallDate
HKUS\USER - SID\Software\Microsoft\Windows\CurrentVersion\Uninstall\InstallDate
Run Code Online (Sandbox Code Playgroud)
很少有键实际上具有InstallDate值,Windows总是填充此列.我设法从WMI中抓住了大部分缺失的日期:
("SELECT * FROM Win32_Product Where Description = " & "'" & strName & "'" & "")
for each objSoftware in colSoftware
Date = objSoftware.InstallDate
Run Code Online (Sandbox Code Playgroud)
这仅提供MSI安装的应用程序的日期.
我想也许Windows"猜到"基于Program Files/ProgramData文件日期的日期,但我尝试手动更改它们并没有反映在添加/删除中.我正在试图弄清楚Windows如何拉动这个日期.我注意到CCleaner可以重现添加/删除而不会出错,所以这些信息可以在某处获得.我只是筋疲力尽地寻找它.
在VarTypeMSDN Microsoft文档中,VarType它说VBScript的功能(大胆强调):
"备注VarType函数永远不会返回Array的值.它总是被添加到一些其他值以指示特定类型的数组.Variant的值只有在已添加到Array的值时才返回VarType函数的参数是一个数组.例如,为整数数组返回的值计算为2 + 8192或8194.如果一个对象有一个默认属性,VarType(object)返回它的默认类型属性."
但
代码如
Dim A,I1, I2, I3
I1 = 1
I2 = 2
I3 = 3
A = Array(I1,I2,I3)
Dim A2
A2 = Split("Test,Test,Test",",")
AT = VarType(A)
AT2 = VarType(A2)
IT1 = VarType(I1)
IT2 = VarType(I2)
IT3 = VarType(I3)
WScript.Echo IT1
WScript.Echo IT2
WScript.Echo IT3
WScript.Echo AT & " - 8192 = " & AT - 8192
WScript.Echo AT2 & " - 8192 = " & AT2 - 8192
WScript.Echo …Run Code Online (Sandbox Code Playgroud) 这是我程序中的代码片段:
WSHShell = WScript.CreateObject("WScript.Shell")
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,未声明"WScript".我知道这段代码在VBScript中有效但我正试图让它与vb.net一起工作.什么出错了?
我究竟做错了什么?从我的测试中,objDic.exists永远不会给出错误!
dim objDic
set objDic = createobject("scripting.dictionary")
objDic.add "test","I have not been deleted"
wscript.echo objDic.item("test") 'Displays -- I have not been deleted
objDic.remove "test"
wscript.echo """" & objDic.item("test") & """" 'Displays -- ""
if objDic.exists("test") then wscript.echo """" & objDic.item("test") & """" 'Displays -- ""
Run Code Online (Sandbox Code Playgroud) 我有一个包含许多文件的文件夹.看起来像file1.txt,newFile1.txt,file2.txt,newFile2.txt,file3.txt,newFile3.txt,file4.txt,newFile4.txt,....
我有一个生成newFilei.txt的代码.我想写一个vbscript来检查这个文件夹中是否存在newFile.我试过这个
Set objFolder = FSO.GetFolder("C:\myFolder\")
For Each objFile In objFolder.Files
fileName=objFile.name
If instr(fileName,"newFile*") =1 Then
WScript.Echo "new File exist"
End If
Next
Run Code Online (Sandbox Code Playgroud)
但这没用.有任何想法吗 ?
vbscript ×10
wsh ×2
arrays ×1
date ×1
dictionary ×1
exists ×1
shell ×1
synchronous ×1
unicode ×1
utf-8 ×1
vb.net ×1
web-services ×1
windows ×1
wmi ×1