Frage

Ich kann die folgende Funktion in VBScript zu arbeiten. Ich versuche, alle Dateien in einem Ordner und Schleife durch sie zu erhalten, die höchsten nummerierte Datei zu erhalten. (Dateiname-Format ist log_XXX.txt) Das Problem, das ich habe, ist, dass der Code nie meine For Each Schleife eintritt. Ich bin neu in VBScript, aber ich scheinen nicht zu verstehen, warum dies nicht funktionieren wird.

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
War es hilfreich?

Lösung

diese Zeile ändern:

Set tempHighNum = "000"

auf die folgenden:

tempHighNum = "000"

Sie versuchen, die tempHighNum Variable auf einen String-Typ einzustellen. Daher sollten Sie nicht verwenden, um die Set Stichwort. Set wird nur dann benötigt, wenn Objekttypen Variablen zugewiesen wird.

Andere Tipps

Ich bin nicht sicher, wie Ihr Skript funktioniert so habe ich diese HTML-Anwendung für Sie zusammen. Es verwendet eine Batch-Datei Dir.Bat befindet sich in C:\Batch genannt, die eine Datei mit dem Namen Data.Txt in c:\Temp gelegen macht. Dann wird das Skript verwendet Über. Das Skript liest die Datei data.txt Zeile für Zeile. Da jede Linie Split-Anweisungen gelesen werden zwei verwendet Name die Zeichenfolge zu trennen in der Textdatei. Danach sammle ich diese Zeichenfolge Zahlen in die Variable ListCol enthalten, als ich für eine größere und größere Zahlen testen. Ich winde schließlich mit der größten Zahl, den ich in Ihrer ursprünglichen Variable tempHighNum platzieren. Ich werde die HTA-Datei und die Dir.Bat Datei schreiben. Ich weiß, dass ich nicht das Skript als eine Funktion geschrieben habe über einen Parameter so, wenn Sie wirklich einen Parameter verwenden müssen, werde ich versuchen, Ihnen zu helfen, indem Sie die HTA-Datei zu ändern, damit es möglich, den Pfad zu betreten und Namen in einem Text-Datei. Das sollte es einfach zu ändern und verwenden. Ich fügte hinzu, und verändert das eine oder andere, um es glatter laufen. Ich bin nicht sicher, wie Ihr Skript funktioniert so habe ich diese HTML-Anwendung für Sie zusammen. Es verwendet eine Batch-Datei Dir.Bat befindet sich in C:\Batch genannt, die eine Datei mit dem Namen Data.Txt in c:\Temp gelegen macht. Dann wird das Skript verwendet Über. Das Skript liest die Datei data.txt Zeile für Zeile. Da jede Linie Split-Anweisungen gelesen werden zwei verwendet Name die Zeichenfolge zu trennen in der Textdatei. Danach sammle ich diese Zeichenfolge Zahlen in die Variable ListCol enthalten, als ich für eine größere und größere Zahlen testen. Ich winde schließlich mit der größten Zahl, den ich in Ihrer ursprünglichen Variable tempHighNum platzieren. Ich werde die HTA-Datei und die Dir.Bat Datei schreiben. Ich weiß, dass ich nicht das Skript als eine Funktion geschrieben habe über einen Parameter so, wenn Sie wirklich einen Parameter verwenden müssen, werde ich versuchen, Ihnen zu helfen, indem Sie die HTA-Datei zu ändern, damit es möglich, den Pfad zu betreten und Namen in einem Text-Datei. Das sollte es einfach zu ändern und verwenden. Ich fügte hinzu, und verändert das eine oder andere, um es glatter laufen.

<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>

Die Dir.Bat Datei weiter:

@Echo Off
Dir/B c:\Temp\Log_???.Txt>c:\Temp\Data.Txt
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top