标签: vbscript

尝试以编程方式创建vbs文件

我正在编写一个创建vbs文件的vb.net应用程序.我已经创建了该文件并测试了发送一行文本,没有任何问题.但是,第二行有问题.

File.WriteLine("set WshShell = CreateObject("WScript.Shell")")
Run Code Online (Sandbox Code Playgroud)

在第二个引号后,它停止以字符串或文本形式读取它.我错过了什么?

vb.net vbscript

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

我可以直接从命令行运行vbscript命令(即没有vbs文件)?

在Python中,您没有义务使用文件,您可以-c "..."通过命令行上的字符串指定并向Python解释器提供Python命令.

我可以用vbscript获得相同的结果吗?我见过需要你使用批处理脚本的解决方案,但是如果我在一个零写权限的系统上怎么办?

根据@Syberdoor的回答,我可以运行:

mshta vbscript:Execute("dim result:result=InputBox(""message"",""title"",""input"")(window.close):echo result")
Run Code Online (Sandbox Code Playgroud)

但它仍然不会在控制台中打印结果.

vbscript wsh

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

InstallShield Automation无法创建对象

我正在使用Installshield 2014和2011。正在使用主要升级和自动构建脚本来处理构建。InstallShield是独立的构建版本。对彼此而言。

现在,Windows 2003服务器上的Installshield 2011一切正常。我可以使用自动化界面打开一个项目,更改产品代码(用于主要升级),然后在构建安装程序之前将其保存。

这样的代码在vbs文件中如下所示:

Dim oISM, oGUID
Set oGUID = CreateObject("InstallShield.GUID")
Set oISM = CreateObject("IswiAuto17.ISWiProject")

oISM.OpenProject strInstallShieldProjectFile
oISM.ProductCode = "{" & oGUID.CreateGUID( ) & "}"
oISM.SaveProject : oISM.CloseProject : set oISM = Nothing
Run Code Online (Sandbox Code Playgroud)

现在,我们已经升级到Windows 2012服务器和InstallShield2014。我已经仔细检查过,根据InstallShield,唯一需要的更改是版本号(从17更改为21)。

但是现在没有任何效果。如果我取出代码并将其放入自己的vbs文件中进行测试并运行,我将得到以下信息:

ActiveX组件无法创建对象:“ InstallShield.GUID”

在谷歌上看,我看到这是在64位模式下运行的。。。。我在32位模式下运行cmd提示符。 http://helpnet.flexerasoftware.com/installshield18helplib/AutomationInterface64Bit.htm

我尝试使用以下脚本调用脚本:%WINDIR%\ SYSWOW64 \ cmd.exe / c cscript

如此处建议的那样: 如何在64位计算机上以32位模式运行VBScript?

和其他地方。这没有用,因为我遇到了同样的错误。

我尝试删除该行,因为我确定可以用另一种方式创建Guid,然后重新运行它。

然后在尝试创建项目时得到了此消息:未知的运行时错误:'CreateObject'

谷歌再次出现,我检查了:https : //community.flexerasoftware.com/showthread.php?189788-Automation-error

和其他人。我尝试确保使用regsvr32注册了dll,并说它成功。但是在重新运行后,它给出了相同的错误。

我尝试直接处理InstallShield文档中的命令,以确保没有拼写错误,但又出现了相同的错误。

我什至尝试按此处所述切换“ sw”的大小写: 运行vbscript时Installshield Automation失败,错误是无法创建对象

同样,同样的错误。

我还尝试了切换到Powershell,因为Powershell更容易调试和阅读。

powershell代码很简单,如下所示:

$oIsm =  new-object -comobject IswiAuto21.ISWiProject

$oISM.OpenProject("$file")
$oISM.ProductCode = "{" + [guid]::NewGuid() + "}" …
Run Code Online (Sandbox Code Playgroud)

vbscript powershell installshield

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

循环功能?

是否可以循环函数直到item = TRUE?

我试图ping服务器...一旦建立连接,或Ping = TRUE,程序将执行.如果未建立连接,则ping将重复,直到它为TRUE.

到目前为止,我的代码如下.如果为TRUE,MyProgram将打开.如果为False,则再次调用该函数.但这不会发生......实际上没有任何事情发生,它只是退出.

任何帮助都很高兴.如果有人知道更有效的方法来完成这项任务,请告诉我.谢谢!

     Function Ping
        Dim oPing, oRetStatus, bReturn
        Set oPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select * from Win32_PingStatus where address='" & "strHost" & "'")

        For Each oRetStatus In oPing
            If IsNull(oRetStatus.StatusCode) Or oRetStatus.StatusCode <> 0 Then
                bReturn = False
            Else
                bReturn = True
            End If
            Set oRetStatus = Nothing
        Next
        Set oPing = Nothing

    Ping = bReturn
    End Function

If Ping Then
    Call MyProgram
Else
    Call PingSub
End If

Sub MyProgram
    Dim objShell
        Set objShell = WScript.CreateObject( …
Run Code Online (Sandbox Code Playgroud)

vbscript loops function call

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

如何在Excel VBA中退出多个for循环?

代码就像

'first for loop
for I = 1 to 5 
    do sth
    'second for loop
    for j = 2 to 7
        do sth
        'third for loop
        for m = 2 to 43
            if [condition] then 
               exit 2nd and 3rd loop and continue on next I ?????
            end if
        next
    next
next
Run Code Online (Sandbox Code Playgroud)

我写了两个"退出",但它没有帮助.它只退出第3个循环并继续下一个j.

vbscript excel vba excel-vba

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

检查文件是否为空

我正在使用.hta,其中包含文本文件中的单词列表,当此文件具有0kb时出现问题...如果文件的大小为0kb而不是错误并加载空白文件,我将如何操作?

我的代码:

  <script type="text/vbscript">
Option Explicit
    Window.resizeTo 373,610
Const csFSpec = "MyList.TxT"
Dim goFS : Set goFS = CreateObject("Scripting.FileSystemObject")

Sub Window_OnLoad()
  If goFS.FileExists(csFSpec) Then
     document.all.DataArea.value = goFS.OpenTextFile(csFSpec).ReadAll()
  Else

     self.close
  End If

  If document.all.DataArea.value =vbcrlf Then

document.all.DataArea.value =""
Else

  End If
End Sub

Sub SaveFile()
If document.all.DataArea.value = "" Then
document.all.DataArea.value =vbcrlf
  goFS.CreateTextFile(csFSpec).Write document.all.DataArea.value

     self.close
Else
document.all.DataArea.value = Replace(document.all.DataArea.value, "\", "_")
document.all.DataArea.value = Replace(document.all.DataArea.value, "/", "_")
document.all.DataArea.value = Replace(document.all.DataArea.value, ":", "_")
document.all.DataArea.value = Replace(document.all.DataArea.value, "*", "_")
document.all.DataArea.value = Replace(document.all.DataArea.value, "?", "_") …
Run Code Online (Sandbox Code Playgroud)

vbscript hta

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

没有循环,如何检查两个数组是否相等?

我在VBScript中有两个相等的dim数组,我想检查它们是否包含确切的值.如果它们只有一个值不同,则它们不相等.

我不关心价值观本身.我需要在没有循环的情况下完成它.我的意思是类似的东西if arrx() = arry() then.

arrays vbscript

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

如何隐藏特定的Windows更新?

两个月前,微软发布了更新(另一个问题的一部分),这导致我的软件出现问题.我找到了解决方法如何卸载它,但卸载后,Windows再次安装它.

我知道在未经用户许可的情况下不得隐藏更新 - 这不是我的问题的一部分.

我正在寻找一种如何隐藏此更新的方法.我接受任何解决方案,但我更喜欢BatchVB-script.

windows vbscript batch-file

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

监视文件更改的批处理脚本

我需要创建一个批处理脚本,持续监视特定文件的更改,在本例中为LogTest.txt.

文件更新后,它将触发一个VBScript消息框,显示LogTest.txt中的最后一行.这个想法是,在消息框被清除后,这将继续监控.

我尝试过使用该forfiles选项,但这只能让我处理日期而不是时间.我知道PowerShell和其他选项都可用,但由于原因太长而无法解释,我只能使用批处理和VBScript.

批处理文件:

@echo off

:RENEW

forfiles /m LogTest.txt /d 0
if %errorlevel% == 0 (
  echo The file was modified today
  forfiles /M LogTest.txt /C "cmd /c echo @file @fdate @ftime"
  cscript MessageBox.vbs "Error found."
  REM do whatever else you need to do
) else (
  echo The file has not been modified today
  dir /T:W LogTest.txt
  REM do whatever else you need to do
)

goto :RENEW     
Run Code Online (Sandbox Code Playgroud)

MessageBox.vbs:

Set objArgs = WScript.Arguments
messageText = …
Run Code Online (Sandbox Code Playgroud)

vbscript file batch-file monitor

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

如何创建具有两个目标的快捷方式

我正在使用以下脚本创建快捷方式:

Set oShellLink = objShell.CreateShortcut("shortcut.lnk")
oShellLink.TargetPath = "C:\Windows\System32\mshta.exe D:\path\to\file.hta"
oShellLink.WindowStyle = 1
oShellLink.IconLocation = "logo.ico"
oShellLink.Description = "app"
oShellLink.WorkingDirectory = desktop
oShellLink.Save
Run Code Online (Sandbox Code Playgroud)

oShellLink.TargetPath = "C:\Windows\System32\mshta.exe D:\path\to\file.hta"它卡住,因为在目标路径的空间.怎么做到这一点?我也试过像这样操纵字符串.

"C:\Windows\System32\mshta.exe" & " " & """" & "D:\PLR\software\plrplus.dll" & """"
Run Code Online (Sandbox Code Playgroud)

windows vbscript

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