0

フォルダー内のすべてのファイルとその特定のフォルダーのすべてのサブフォルダーの情報を抽出できましたが、すべてのファイルとフォルダーの情報 (つまり、ファイルの種類、ファイル パス、ファイル サイズ、ファイル名) を抽出したい場合特定のディレクトリの、私はそれを行うことができません。許可が拒否されたと表示されます。

スクリプトは次のとおりです。

Option Explicit
Dim objFSO,objf,objfolder, objFile, strFileProperties, strFiles,OBJFLD,objfile2
dim objf1,objfile1,objtextfile,strfolderproperties,objsubfld,objfl,objfl1,strfileproperties2

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objf= objFSO.Getfolder("C:\")
set OBJFLD=objf.subfolders
for each objfolder in OBJFLD

  strFolderproperties =_
    strFolderproperties & "Number of files: " & objFolder.Files.Count & VbCrLf

  set objfile2=objfolder.files
  for each objfile in objfile2

    ' Display generel file properties of every subfld
    strFileProperties = strFileProperties & "File name: " & objFile.Name & VbCrLf
    strFileProperties = strFileProperties & "File path: " & objFile.Path & VbCrLf
    strFileProperties = strFileProperties & "File size: " & objFile.Size & " bytes" & VbCrLf
    strFileProperties = strFileProperties & "File type: " & objFile.Type & VbCrLf & vbcrlf
  next
next

Set objf= objFSO.Getfolder("C:\")
set OBJfl=objf.files
for each objfl1 in OBJfl
  'display properties of the files of the main folder   
  strFileProperties2 = strFileProperties2 & "File name: " & objfl1.Name & VbCrLf
  strFileProperties2 = strFileProperties2 & "File path: " & objFl1.Path & VbCrLf
  strFileProperties2 = strFileProperties2 & "File size: " & objFl1.Size & " bytes" & VbCrLf
  strFileProperties2 = strFileProperties2 & "File type: " & objFl1.Type & VbCrLf & vbcrlf
next

set objf1=objfso.getfolder("E:\logs3")

set objfile1=objfso.getfile( "E:\logs3\database.txt")

set objf1=nothing
set objfile1=nothing

set objtextfile=objfso.opentextfile("E:\logs3\database.txt",8,true)

objtextfile.writeline(strfileproperties)
objtextfile.writeline(strfileproperties2)
objtextfile.close

set objf1=objfso.getfolder("E:\logs3")

set objfile1=objfso.getfile( "E:\logs3\database.txt")

set objf1=nothing
set objfile1=nothing

set objsubfld=objfso.opentextfile("E:\logs3\database.txt",8,true)
objsubfld.writeline(strfolderproperties)
objsubfld.close

注:このスクリプトは、ディレクトリ全体ではなく、任意のフォルダーのファイルの情報を抽出するために使用すると機能します。

解決策はありますか?ディレクトリのすべてのファイルとフォルダの情報を取得することは可能ですか?

エラーメッセージは次のとおりです。

line:15
character:12
error:permission denied
4

1 に答える 1

0

プロパティを読み取るには、オブジェクトにアクセスする必要があります。Windows システムには、管理者でさえアクセスできないフォルダーがいくつかあります。これらのフォルダーまたはその中のファイル/サブフォルダーのプロパティを列挙することはできません。あなたができる最善の方法は、アクセスできるかどうかを検出し、それ以外の場合は (サブ) フォルダーをスキップすることです。

For Each objfolder In objFSO.GetFolder("C:\").SubFolders
  skip = False
  On Error Resume Next
  count = objFolder.Files.Count
  If Err Then skip = True
  On Error Goto 0

  If Not skip Then
    For Each objfile In objfolder.Files
      ...
    Next
  End If

  ...
Next
于 2013-07-31T09:26:55.397 に答える