0

VBScriptを使用してテキストファイルの行数をカウントしようとしています。固定名のテキストファイルでも問題なくこれを行うことができました。EG: "C:\ Orig \ sample.txt"ただし、ファイル名は毎日変更されます。EG: "C:\ Orig \ sample * todaysdate * .txt"

変数名のファイルを「読み取る」方法を探しましたが、うまくいきませんでした。

固定ファイル名についてこれまでに持っているのは次のとおりです。

Dim oFso, oReg, sData, lCount, linesum 
Const ForReading = 1, sPath = "C:\Orig\sample.txt" 
Set oReg = New RegExp 
Set oFso = CreateObject("Scripting.FileSystemObject") 
sData = oFso.OpenTextFile(sPath, ForReading).ReadAll 
With oReg 
    .Global = True 
    .Pattern = "\r\n" 'vbCrLf 
    lCount = .Execute(sData).Count + 1

End With 
WScript.Echo("The total number of lines including the header is " & lCount) 
Set oFso = Nothing 
Set oReg = Nothing

これは完全にうまく機能しますが、変数ファイル名の正しい構文が見つかりません。

何か助けがあれば、私が調べようとしているファイルは、含まれているフォルダー内の唯一のファイルになります。

誰かが何か援助を提供することができますか?どうもありがとう。


私は今、次のことを試しました:

Dim objFso, objReg, sData, lCount 
Const ForReading = 1 
sPath = "C:\Orig" 

Set objFso = CreateObject("Scripting.FileSystemObject")  
Set objFolder = objFso.GetFolder(sPath) 
For Each objFile in objFolder.Files 
    Set objReg = New RegExp  
    sData = objFso.OpenTextFile(sPath, ForReading).ReadAll
    With objReg  
        .Global = True  
        .Pattern = "\r\n" 'vbCrLf  
        lCount = .Execute(sData).Count + 1 

    End With  
    WScript.Echo("The total number of lines including the header is " & lCount)  
    Set objFso = Nothing  
    Set objReg = Nothing
    Set objFolder = Nothing
    set sData = Nothing
Next 

しかし、9行目で「許可が拒否されました」というエラーが発生します。フォルダのアクセス許可とファイルのアクセス許可を確認し、完全な権限を持っています。

誰かアイデアはありますか?

前もって感謝します。

4

1 に答える 1

0

代わりに、フォルダ内のファイルをループします。ファイルに直接名前を付ける必要はありません。

Dim oFso, oReg, sData, lCount, linesum 
Const ForReading = 1
sPath = "C:\Orig\sample\"

Set oFso = CreateObject("Scripting.FileSystemObject") 
Set objFolder = objFso.GetFolder(sPath)
For Each objFile in objFolder.Files
    Set oReg = New RegExp 
    sData = oFso.OpenTextFile(sPath, ForReading).ReadAll 
    With oReg 
        .Global = True 
        .Pattern = "\r\n" 'vbCrLf 
        lCount = .Execute(sData).Count + 1

    End With 
    WScript.Echo("The total number of lines including the header is " & lCount) 
    Set oFso = Nothing 
    Set oReg = Nothing
Next
于 2012-08-20T17:00:28.143 に答える