Question

Je ne parviens pas à utiliser la fonction suivante dans VBScript. J'essaie de placer tous les fichiers dans un dossier et de les parcourir pour obtenir le fichier dont le numéro est le plus élevé. (le format du nom de fichier est log_XXX.txt) Le problème que je rencontre est que le code n'entre jamais dans ma boucle pour chaque . Je suis nouveau dans VBScript, mais je ne semble pas comprendre pourquoi cela ne fonctionne pas.

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
Était-ce utile?

La solution

Modifiez cette ligne:

Set tempHighNum = "000"

à ce qui suit:

tempHighNum = "000"

Vous essayez de définir la variable tempHighNum sur un type de chaîne. Par conséquent, vous ne devez pas utiliser le mot clé Définir . Définir n'est nécessaire que lors de l'affectation de types d'objet à des variables.

Autres conseils

Je ne suis pas sûr du fonctionnement de votre script, je vous ai donc préparé cette application HTML. Il utilise un fichier de commandes appelé Dir.Bat situé dans C: \ Batch , qui crée un fichier appelé Data.Txt situé dans c. : \ Temp . Puis le script prend plus de. Le script lit le fichier Data.Txt ligne par ligne. Chaque ligne étant lue, deux instructions fractionnées sont utilisées pour séparer la chaîne dans le nom du fichier texte. Après cela, je collecte ces chaînes contenant des nombres dans la variable ListCol , comme je le teste pour des nombres de plus en plus grands. Je termine finalement avec le plus grand nombre que je place dans votre variable originale tempHighNum . Je publierai le fichier HTA et le fichier Dir.Bat. Je sais que je n'ai pas écrit le script sous forme de fonction à l'aide d'un paramètre. Par conséquent, si vous devez utiliser un paramètre, je vais essayer de vous aider en modifiant le fichier HTA afin de permettre la saisie du chemin et du nom du fichier dans une zone de texte. Cela devrait le rendre facile à changer et utiliser. J'ai ajouté et changé une chose ou deux pour le rendre plus fluide. Je ne suis pas sûr du fonctionnement de votre script, je vous ai donc préparé cette application HTML. Il utilise un fichier de commandes appelé Dir.Bat situé dans C: \ Batch , qui crée un fichier appelé Data.Txt situé dans c. : \ Temp . Puis le script prend plus de. Le script lit le fichier Data.Txt ligne par ligne. Chaque ligne étant lue, deux instructions fractionnées sont utilisées pour séparer la chaîne dans le nom du fichier texte. Après cela, je collecte ces chaînes contenant des nombres dans la variable ListCol , comme je le teste pour des nombres de plus en plus grands. Je termine finalement avec le plus grand nombre que je place dans votre variable originale tempHighNum . Je publierai le fichier HTA et le fichier Dir.Bat. Je sais que je n'ai pas écrit le script sous forme de fonction à l'aide d'un paramètre. Par conséquent, si vous devez utiliser un paramètre, je vais essayer de vous aider en modifiant le fichier HTA afin de permettre la saisie du chemin et du nom du fichier dans une zone de texte. Cela devrait le rendre facile à changer et utiliser. J'ai ajouté et changé une chose ou deux pour le rendre plus fluide.

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

Le fichier Dir.Bat est le suivant:

@Echo Off
Dir/B c:\Temp\Log_???.Txt>c:\Temp\Data.Txt
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top