标签: vbscript

当没有文件时,InstallShield 使用 VBScript 和 CustomAction 删除文件失败

卸载以前的安装(我使用 InstallShield 2009 构建的)时,我想删除程序在卸载结束时所在的整个文件夹。我无法弄清楚如何使用自定义 Aaction 来做到这一点,因此使用下面的代码,我决定在安装开始后立即删除该文件。如果程序已经安装,这可以正常工作……但如果之前没有安装,它会抛出错误 1701,因为显然,该文件夹不存在!我不知道如何解决这个问题,而且我几乎不知道 VBScript。我开始尝试捕获错误以掩盖错误,但显然 VBScript 中不存在。

Dim fso, Folder2Delete
Folder2Delete =  "C:\Program Files\MyProgramDir"
Set fso = CreateObject("Scripting.FileSystemObject")
fso.DeleteFolder(Folder2Delete)
Run Code Online (Sandbox Code Playgroud)

那么,如何将自定义操作粘贴到 InstallShield 中的卸载中,或者如何将 VB 脚本设置为仅删除存在的文件?或者最后一搏,我怎样才能让它在它不存在时不显示错误......?

非常感谢,这让我发疯了!

vbscript windows-installer installshield installshield-2009

4
推荐指数
1
解决办法
3994
查看次数

从另一个 .VBS 文件为类(驻留在 B.vbs 中)创建实例

我有 2 个 vbs 文件。

A.vbs

Class test
  public a
  public b
End Class
Run Code Online (Sandbox Code Playgroud)

B.vbs

Dim objShell
Set objShell = Wscript.CreateObject("WScript.Shell")
objShell.Run "C:\Users\shanmugavel.chinnago\Desktop\Test3.vbs" 

Dim ins
Set ins = new test 'Here throws "Class not defined: test"
ins.a = 10
ins.b = "SCS"

msgbox ins.a
msgbox ins.b
Run Code Online (Sandbox Code Playgroud)

现在我想在 B.vbs 文件中实现这个。但是在为 A.vbs 中可用的类创建实例时会引发错误。有什么帮助吗?

vbscript

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

schtasks 参数禁用“用户登录时执行”

我正在尝试在以管理员身份执行的 VBScript 中设置计划任务。正如我所看到的,该脚本设置任务没有问题,但它不会执行,因为它是使用参数创建的run only when user is logged on

代码如下:

Set objShell=Wscript.CreateObject("Wscript.Shell")
command= windir&"\system32\schtasks.exe /create /sc minute /mo "&minutes&" /tn "&APPNAME&" /f /tr ""C:\Windows\System32\wscript.exe '"&getAplicationPath&"\"&wscript.ScriptName&"' cron "
objShell.Run command,0, false
Run Code Online (Sandbox Code Playgroud)

我无法在 msdn.microsoft.com 或 Google 搜索中找到必须设置以禁用该选项的参数。

vbscript windows-task-scheduler

4
推荐指数
1
解决办法
7298
查看次数

从完整文件路径中提取文件名

在 VBScript 中,如何将 Test1_QTP 文件夹名称与以下路径分开。我需要将“Test1_QTP”字符串提取到变量中。

C:\TeamTask\Automation\Daily\EB\20140508\Test1_QTP
Run Code Online (Sandbox Code Playgroud)

任何建议表示赞赏。

vbscript

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

多次 Dim 变量是否有害?

这似乎是一个非常基本的问题,但我仍然找不到答案。

在 VBScript 中,使用 Dim 语句多次声明相同的标量变量有什么害处吗?

我正在从事一些相关项目并开发一些我想重用的代码片段。但是,我有点担心使用两次使用相同变量名的代码是否存在问题,如下所示:

Dim i
for i = 1 to Count
    '* doin' somethin' here
next

Dim i
for i = 1 to UnrelatedOtherCount
    '* doin' somethin' different yo
next
Run Code Online (Sandbox Code Playgroud)

它不仅仅是迭代循环变量;我可能在脚本中有多个地方使用了正则表达式。如果我的脚本使用了两段重复使用的代码,并且每一段都使用一个“patternString”变量并首先声明变量:

'* first section of code from the folder
Dim objPersonRegex, patternString
Set objPersonRegex = new RegExp
...

'* a completely different section of code
Dim objBuildingRegex, patternString
Set objBuildingRegex = new RegExp
Run Code Online (Sandbox Code Playgroud)

我的直觉是,这不应该是一个问题,Dim 只是创建一个给定名称的变量(如果它尚不存在),如果存在,则继续,因为它被告知要做的事情已经完成了。但事实真的是这样吗?如果重要的话,这些是在 Windows Script Host 上运行的脚本。

(为了澄清我所担心的事情,我根本担心变量的值被破坏。如果我需要保留变量的值,我会将其保存在另一个变量中,一个 …

vbscript wsh

4
推荐指数
1
解决办法
1776
查看次数

VBS 解压缩 - 需要对象:'objshell.NameSpace(...)'

我对 bash 或 vbs 知之甚少。我正在尝试制作一个脚本,该脚本将自动解压缩名为“dungeon.zip”的 zip,其中包含我编写的一个小游戏。我想将其解压缩到 zip 文件所在目录中的一个名为 dungeon 的文件夹中。我使用了此答案中的代码,并将这些文件替换为我的文件:

strZipFile  = "dungeon.zip"
strUnzipped = "dungeon\"

Sub UnZip(ExtractTo,ZipFile)

Set fso = CreateObject("Scripting.FileSystemObject") 
    If NOT fso.FolderExists(ExtractTo) Then 
       fso.CreateFolder(ExtractTo) 
End If 

Set objShell = CreateObject("Shell.Application") 
Set FilesInZip=objShell.NameSpace(ZipFile).items 

ObjShell.NameSpace(ExtractTo).CopyHere(FilesInZip) 
Set fso = Nothing 
Set objShell = Nothing 
End Sub

set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("MyDocuments")

strZipPath   = strDesktop & strZipFile
strUnzipPath = strDesktop & strUnzipped

UnZip strUnzipPath , strZipPath
Run Code Online (Sandbox Code Playgroud)

正如他的回答一样,我从 cmd 文件运行 .vbs:

cscript UnzipZip.vbs
Run Code Online (Sandbox Code Playgroud)

这是错误:

C:\Users\Brett\Downloads\UnzipZip.vbs(12, 1) Microsoft VBScript …
Run Code Online (Sandbox Code Playgroud)

vbscript zip cmd unzip

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

如何在VBScript中获取http响应头

为什么这个 .vbs 脚本检索空值?

Option Explicit
On Error Resume Next
Dim h: Set h = CreateObject("MSXML2.XMLHTTP")
h.Open "HEAD", "http://google.com/", False
h.send
Dim GetLocation: Set GetLocation = h.getResponseHeader("Location")
MsgBox GetLocation
Run Code Online (Sandbox Code Playgroud)

vbscript header xmlhttprequest

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

重置网络适配器

我这里有一个 VBScript 来“切换”我的网络适配器(根据在 Internet 上找到的脚本构建)。

我想知道是否有人可以帮助我将其转换为可以“重置”(禁用,然后重新启用)我的无线适配器的脚本,而不是切换它。

'~ Toggle a SPECIFIED NIC on or off
Option Explicit

Const NETWORK_CONNECTIONS = &H31&

Dim objShell, objFolder, objFolderItem, objEnable, objDisable
Dim folder_Object, target_NIC
Dim NIC, clsVerb
Dim str_NIC_Name, strEnable, strDisable
Dim bEnabled, bDisabled

'NIC name goes here VVV
str_NIC_Name = "Wi-Fi"

strEnable = "En&able"
strDisable = "Disa&ble"

' create objects and get items
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(NETWORK_CONNECTIONS)
Set objFolderItem = objFolder.Self
Set folder_Object = objFolderItem.GetFolder

Set target_NIC = Nothing

' …
Run Code Online (Sandbox Code Playgroud)

vbscript wmi

4
推荐指数
1
解决办法
2455
查看次数

将 Json 字符串解析为经典 ASP 页面

使用库将 json 字符串解析为经典 asp 的最佳方法是什么?

Dim jsonString
jsonString = {"date":"4/28/2017","custType":"100","vehicle":"1"}
Run Code Online (Sandbox Code Playgroud)

想拥有

response.write("<li> date :" & json("date") & "</li>")
Run Code Online (Sandbox Code Playgroud)

vbscript json asp-classic

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

如何从 R 运行 VBS 脚本,同时将参数从 R 传递到 VBS

假设我想从 R 运行一个 VBS 脚本,并且想将一个值从 R 传递到该脚本。

例如,在一个名为“Msg_Script.vbs”的简单文件中,我有以下代码:

Dim Msg_Text

Msg_Text = "[Insert Text Here]"

MsgBox("Hello " & Msg_Text)
Run Code Online (Sandbox Code Playgroud)

如何使用 R 运行此脚本,同时在 R 中编辑参数和/或变量?例如,在上面的脚本中,我将如何编辑Msg_Text变量的值?

vbscript r

4
推荐指数
1
解决办法
4643
查看次数