Pergunta

Eu não posso começar a seguinte função no VBScript ao trabalho. Eu estou tentando obter todos os arquivos em uma pasta e loop através deles para obter a maior arquivo numerado. (Formato nome do arquivo é log_XXX.txt) O problema que estou tendo é que o código nunca entra meu loop For Each. Eu sou novo para VBScript, mas eu não parecem entender por que isso não vai funcionar.

Function GetFileNumber(folderspec)
   Dim fso, f, f1, fc, s, tempHighNum
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(folderspec)
   WScript.Echo f.Files.Count : rem prints 3
   Set fc = f.Files
   WScript.Echo fc.Count : rem prints 3
   Set tempHighNum = "000"
   For Each f1 in fc
      WScript.Echo f1.Size : rem does not print
      WScript.Echo f1.Type : rem does not print
      WScript.Echo f1.Name : rem does not print       
      s = Right(f1.name,3)
      IF NOT(ISNULL(s)) THEN
        IF (s > tempHighNum) THEN
            tempHighNum = s
        END IF
      END IF
   Next
   GetFileNumber = tempHighNum
End Function
Foi útil?

Solução

Alterar esta linha:

Set tempHighNum = "000"

com o seguinte:

tempHighNum = "000"

Está a tentar definir a variável tempHighNum para um tipo de cadeia. Portanto, você não deve usar o Set palavra-chave. Set só é necessária quando a atribuição de tipos de objetos a variáveis.

Outras dicas

Eu não sei como o script funciona então eu coloquei esta aplicação HTML juntos para você. Ele usa um arquivo de lote chamado Dir.Bat localizado na C:\Batch que faz uma Data.Txt arquivo chamado localizado no c:\Temp. Em seguida, o script leva sobre. O script lê a linha Data.txt arquivo por linha. À medida que cada linha é lida duas declarações parciais são usados ??para separar a cadeia no nome do arquivo de texto. Depois disso, recolher essas cadeias contendo números no ListCol variável como teste para números cada vez maiores. Eu finalmente acabar com o maior número que eu colocar no seu tempHighNum variável original. Vou postar o arquivo HTA eo arquivo Dir.Bat. Eu sei que eu não escrevi o roteiro como uma função usando um parâmetro por isso, se você realmente precisa usar um parâmetro, vou tentar ajudá-lo alterando o arquivo HTA para torná-lo possível introduzir o nome do caminho e arquivo em uma caixa de texto. Isso deve tornar mais fácil para mudar e usar. Eu adicionei e mudou uma coisa ou duas para torná-lo correr mais suave. Não estou certo como o seu script funciona então eu coloquei esta aplicação HTML juntos para você. Ele usa um arquivo de lote chamado Dir.Bat localizado na C:\Batch que faz uma Data.Txt arquivo chamado localizado no c:\Temp. Em seguida, o script leva sobre. O script lê a linha Data.txt arquivo por linha. À medida que cada linha é lida duas declarações parciais são usados ??para separar a cadeia no nome do arquivo de texto. Depois disso, recolher essas cadeias contendo números no ListCol variável como teste para números cada vez maiores. Eu finalmente acabar com o maior número que eu colocar no seu tempHighNum variável original. Vou postar o arquivo HTA eo arquivo Dir.Bat. Eu sei que eu não escrevi o roteiro como uma função usando um parâmetro por isso, se você realmente precisa usar um parâmetro, vou tentar ajudá-lo alterando o arquivo HTA para torná-lo possível introduzir o nome do caminho e arquivo em uma caixa de texto. Isso deve tornar mais fácil para mudar e usar. Eu adicionei e mudou uma coisa ou duas para torná-lo correr mais suave.

<HTML><!-- C:\HTML_and_HTA_CODE_EXAMPLES\ATest.Hta -->
    <HEAD>
        <TITLE>ATest.Hta</TITLE>
        <HTA:APPLICATION ID="HTA MyApp" 
          APPLICATIONNAME="Help4Saul Dolgin"
          BORDER         ="thick"
          BORDERSTYLE    ="complex"
          CAPTION        ="yes"
          CONTEXTMENU    ="no"
          ICON           ="http://Your URL/your icon.ico"
          INNERBORDER    ="yes"
          MAXIMIZEBUTTON ="yes"
          MINIMIZEBUTTON ="yes"
          NAVIGABLE      ="no"
          SCROLL         ="no"
          SHOWINTASKBAR  ="yes"
          SINGLEINSTANCE ="yes"
          SYSMENU        ="yes"
          VERSION        ="1.0"
          WINDOWSTATE    ="Normal"/>
    </HEAD>
    <style>
        .ExBt21    {background:"#E0E0E0";Color:"red";}/* For Exit Button */
        .Spn4      {font-family:"arial";font-weight:"bold";Color:"blue"}
        .Spn2      {Color:"red"}
        .tAr1      {font-family:"arial";font-weight:"bold";Color:"blue"}
    </style>
    <SCRIPT Language="VBScript">
        Sub GetFileNumber
            Dim FSO, f, fc, tempHighNum, strLine, objSHO, line
            Dim DataArr, Data1Arr, Data2Arr, ListCol
            fc=""
            ListCol=""
            tempHighNum=000
            Set objSHO=CreateObject("WScript.Shell")
            objSHO.run "C:\Batch\Dir.bat"
            Set FSO = CreateObject( "Scripting.FileSystemObject" )
            Set f = FSO.OpenTextFile("c:\Temp\Data.Txt", "1")
            Do Until f.AtEndOfStream
            fc = fc & f.ReadLine & vbLf
            Loop
            tArea1.innerHTML=fc
            Data1Arr = Split(fc,vbLf)
            Count=UBound(Data1Arr)
            For x=0 To Count
            DataArr = Split(Data1Arr(x),".")
            If x <= Count-1 Then
                Data2Arr = Split(DataArr(0),"_")
                ListCol = ListCol & Data2Arr(1) & vbLf
                If Data2Arr(1) > tempHighNum Then
                    tempHighNum = Data2Arr(1)
                End If
            End If
            Next 
            Span2.innerHTML=tempHighNum
        End Sub
        Sub ExtBtn:Window.close:End Sub' Exit Script For Window
    </SCRIPT>
    <BODY bgcolor="#D0D0D0">
        <button OnClick="GetFileNumber">Button To Press</button><br/>
        <span id="Span1" class="Spn1">The biggest No. is:&nbsp;</span><span id="Span2" class="Spn2"></span><br/><br/>
        <span Id="Span3" Class="Spn3">Dir.Bat looks in:&nbsp;</span><span Id="Span4" Class="Spn4">C:\Temp\Log_???.Txt</span><br/>
        <textarea Id="tArea1" class="tAr1" rows="10"></textarea><br/><br/>
        <input id="ExBtn21" class="ExBt21"  type="Button" name="ExitBtn21" OnClick="ExtBtn" value="&nbsp-Exit-&nbsp"/><!-- Exit Button -->
    </BODY>
</HTML>

O arquivo Dir.Bat é próxima:

@Echo Off
Dir/B c:\Temp\Log_???.Txt>c:\Temp\Data.Txt
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top