对于每个循环语法错误

时间:2013-11-14 21:16:36

标签: for-loop vbscript

此Windows Installer程序包存在问题。作为设置的一部分运行的程序没有按预期完成。请联系您的支持人员或软件包供应商

嘿,我写了这个脚本删除了一台计算机的共享但是当我运行我的脚本时,它会重复相同的wscript.echo来判断正在删除的共享。为什么我的代码在运行时永远不会结束我如何解决这个问题。

我的意见:

'The function that is called to run the command Line that deletes a specific share from a pc
Function DeleteThisShare(Share)
    Dim objShell
    'Logging The deleted Approved Shares
    objDeletedFile.WriteLine (Now & " - Removed share " & Trim(Share))
    DeleteThisShare = "net share " & chr(34) & Share & chr(34) &" /DELETE"
    Wscript.echo DeleteThisShare
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run DeleteThisShare
End Function

我的循环:

'Compares The UnApproved Shares to the Current Shares
For Each objItem In colItems
    Dim StrNonUnapprovedShares, Item
    StrCurrentShares = objItem.name

    if instr(AdminShares,lcase(objitem.name)) > 0 or mid(objitem.name,2,1) = "$" or left(lcase(objitem.name),10) = "pkgsvrhost" then
        'Skipping known admin share
    Else
            For each Item in arrUnApprovedLines
            If Lcase(Item) = Lcase(strCurrentShares) Then
                StrNonUnapprovedShares = (StrNonUnapprovedShares & strCurrentShares & vbCrLf)
            End If
        Next
    End If
Next


Dim notUnapprovedShares, notUnapprovedLines
notUnapprovedLines = StrNonUnapprovedShares
notUnapprovedLines = Split(notUnapprovedLines, vbCrLf)

Dim y, Line2

For y = 0 to uBound(notUnapprovedLines)
    Line2 = Trim(notUnapprovedLines(y))
    If len(Line2) > 0 Then
        DeleteThisShare(Line2)
    End If
Next

2 个答案:

答案 0 :(得分:1)

我认为问题是由函数名称作为变量引起的。对于你正在编译的VB来说没关系,但我不认为VBScript以同样的方式识别它。使用单独的变量名称代替DeleteThisShare,例如strDeleteThisShare

答案 1 :(得分:0)

如果我不得不猜测是因为你通过让脚本回显DeleteThisShare函数来创建一个递归循环。函数到达该行并在它能够继续之前再次被调用。

尝试仅为函数的结果赋值,并使用局部变量来存储任何其他调试/临时值。