2009-04-30 60 views
4

我無法在VBScript中獲得以下功能。我正在嘗試獲取文件夾中的所有文件,並通過它們循環獲取編號最高的文件。 (文件名格式是log_XXX.txt)我遇到的問題是代碼永遠不會進入我的For Each循環。我是VBScript的新手,但我似乎不明白爲什麼這不起作用。每個VBScript都不起作用

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 

回答

11

改變這一行:

Set tempHighNum = "000" 

以下幾點:

tempHighNum = "000" 

您試圖將tempHighNum變量設置爲一個字符串類型。因此,您不應該使用設置關鍵字。 設置僅在將對象類型分配給變量時需要。

+0

打我吧..我確認。 – madcolor 2009-04-30 19:28:26

1

我不確定你的腳本是如何工作的,所以我把這個HTML應用程序放在一起。它使用位於C:\Batch中的名爲Dir.Bat的批處理文件,該文件使位於c:\Temp中的文件名爲Data.Txt。然後該腳本需要 。該腳本逐行讀取文件Data.Txt。在讀取每行時,將使用兩個拆分語句分隔文本文件名中的字符串。之後,我收集包含數字的字符串到變量ListCol中,以測試更大和更大的數字。我終於結束了我放在原始變量tempHighNum中的最大數字。我將發佈HTA文件和Dir.Bat文件。我知道我沒有使用參數將腳本編寫爲函數,所以如果您確實需要使用參數,我會嘗試通過更改HTA文件來幫助您,以便在TextBox中輸入路徑和文件名。這應該會使 更容易更改和使用。我添加並改變了一兩件東西,使它更流暢。 我不確定你的腳本是如何工作的,所以我把這個HTML應用程序放在一起。它使用位於C:\Batch中的名爲Dir.Bat的批處理文件,該文件使位於c:\Temp中的文件名爲Data.Txt。然後該腳本需要 。該腳本逐行讀取文件Data.Txt。在讀取每行時,將使用兩個拆分語句分隔文本文件名中的字符串。之後,我收集包含數字的字符串到變量ListCol中,以測試更大和更大的數字。我終於結束了我放在原始變量tempHighNum中的最大數字。我將發佈HTA文件和Dir.Bat文件。我知道我沒有使用參數將腳本編寫爲函數,所以如果您確實需要使用參數,我會嘗試通過更改HTA文件來幫助您,以便在TextBox中輸入路徑和文件名。這應該會使 更容易更改和使用。我添加並改變了一兩件東西,使它更流暢。

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

的Dir.Bat文件是下一個:

@Echo Off 
Dir/B c:\Temp\Log_???.Txt>c:\Temp\Data.Txt