2009-04-30 31 views
4

VBScriptで以下の機能を使用することはできません。私は、フォルダ内のすべてのファイルを取得しようとしており、最も番号の付いたファイルを取得するためにループしています。 (ファイル名の形式はlog_XXX.txtです)問題は私のコードが私のFor Eachループに入ることがないということです。私はVBScriptを初めて使っていますが、なぜこれが動作しないのか分かりません。次へVBScript Forそれぞれが機能していません

Set tempHighNum = "000" 

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

変更するには、この行を

tempHighNum = "000" 

あなたは、文字列型にtempHighNum変数を設定しようとしています。したがって、キーワードを使用しないでください。 セットは、オブジェクトタイプを変数に割り当てるときにのみ必要です。

+0

は..私は確認してそれに私を打ちます。 – madcolor

+1

それはそれを修正しました。ありがとうございました。 –

1

あなたのスクリプトの仕組みがわからないので、私はこのHTMLアプリケーションをあなたのためにまとめています。これはDir.Batと呼ばれるバッチファイルC:\Batchを使用し、Data.Txtというファイルをc:\Tempに配置します。その後、スクリプトには がかかります。スクリプトはData.Txtファイルを1行ずつ読み込みます。各行が読み込まれると、2つのsplit文がテキストファイルの名前の文字列を区切るために使用されます。その後、数値を含む文字列を変数ListColに集めて、大きな数値と大きい数値をテストします。私は最終的にあなたの元の変数tempHighNumに置いた最大の数字で終わります。私は、HTAファイルとDir.Batファイルを投稿します。私はパラメータを使用してスクリプトを書くのではなく、実際にパラメータを使用する必要がある場合は、HTAファイルを変更してTextBoxにパスとファイル名を入力できるようにします。それは を変更して使いやすくするはずです。私はそれをよりスムーズに動かすために1つまたは2つを追加して変更しました。 スクリプトの仕組みがわからないので、私はこのHTMLアプリケーションをあなたのためにまとめました。これはDir.Batと呼ばれるバッチファイルC:\Batchを使用し、Data.Txtというファイルをc:\Tempに配置します。その後、スクリプトには がかかります。スクリプトはData.Txtファイルを1行ずつ読み込みます。各行が読み込まれると、2つのsplit文がテキストファイルの名前の文字列を区切るために使用されます。その後、数値を含む文字列を変数ListColに集めて、大きな数値と大きい数値をテストします。私は最終的にあなたの元の変数tempHighNumに置いた最大の数字で終わります。私は、HTAファイルとDir.Batファイルを投稿します。私はパラメータを使用してスクリプトを書くのではなく、実際にパラメータを使用する必要がある場合は、HTAファイルを変更してTextBoxにパスとファイル名を入力できるようにします。それは を変更して使いやすくするはずです。私はそれをよりスムーズに動かすために1つまたは2つを追加して変更しました。

<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 
関連する問題