none
VbScript para exibir caminho, dono e tamanho dos arquivos de uma pasta RRS feed

  • Pergunta

  • Boa tarde,

     

    Preciso de um vbs que exiba o caminho, dono e tamanho de todos arquivos de uma pasta e suas subpastas.

     

    Se alguem puder me ajudar obrigado.

     

    segunda-feira, 15 de setembro de 2008 17:02

Respostas


  • Só não está listando os arquivos que estão no primeiro nivel da pasta, mas lista de todas as subpastas.
    Se der uma melhorada nele posta aê pra gente.
    só para constar não expert em scripts...apenas usei o google, usando sintax em inglês tipo vbs get owner files, e consegui os dois scripts depois fui tentando molda-lo.



    '////////////////////////////////////////////////////inicio\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    'Lista o proprietario dos arquivos em subpastas
    'Adaptado por: romeu malacarne Avancini - rmavancini@gmail.com
    ':fontes: http://www.microsoft.com/technet/scriptcenter/resources/qanda/oct04/hey1007.mspx e http://www.microsoft.com/technet/scriptcenter/resources/qanda/oct04/hey1020.mspx
    'Modo de usar: execute o cmd. vá até o local do script e digite cscript.exe nome do arquivo vbs
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'colque o nome da pasta que você quer gerar o relatório, não deixe de usar a \ no final.
    objStartFolder = "d:\romeu\"

    Set objFolder = objFSO.GetFolder(objStartFolder)
    'Wscript.Echo objFolder.Path
    Set colFiles = objFolder.Files
    For Each objFile in colFiles
    'Wscript.Echo objFile.Name
    Next
    'Wscript.Echo

    ShowSubfolders objFSO.GetFolder(objStartFolder)



    Sub ShowSubFolders(Folder)
    For Each Subfolder in Folder.SubFolders
    Wscript.Echo Subfolder.Path
    Set objFolder = objFSO.GetFolder(Subfolder.Path)
    Set colFiles = objFolder.Files
    For Each objFile in colFiles
    On Error Resume Next
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    strFile = Subfolder.Path & "\" & objFile.Name
    Set colItems = objWMIService.ExecQuery _
    ("ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='" & strFile & "'}" _
    & " WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner")
    For Each objItem in colItems
    'Wscript.Echo objItem.ReferencedDomainName
    Wscript.Echo "Arquivo: " & objFile.Name & " Owner: " & objItem.AccountName
    Wscript.Echo
    Next
    Next
    Wscript.Echo "------------------------------------------------------------------------------------------------"
    Wscript.Echo
    ShowSubFolders Subfolder
    Next
    End Sub
    wscript.quit
    '////////////////////////////////////////////////////////fim\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    segunda-feira, 15 de setembro de 2008 22:08

Todas as Respostas


  • Só não está listando os arquivos que estão no primeiro nivel da pasta, mas lista de todas as subpastas.
    Se der uma melhorada nele posta aê pra gente.
    só para constar não expert em scripts...apenas usei o google, usando sintax em inglês tipo vbs get owner files, e consegui os dois scripts depois fui tentando molda-lo.



    '////////////////////////////////////////////////////inicio\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    'Lista o proprietario dos arquivos em subpastas
    'Adaptado por: romeu malacarne Avancini - rmavancini@gmail.com
    ':fontes: http://www.microsoft.com/technet/scriptcenter/resources/qanda/oct04/hey1007.mspx e http://www.microsoft.com/technet/scriptcenter/resources/qanda/oct04/hey1020.mspx
    'Modo de usar: execute o cmd. vá até o local do script e digite cscript.exe nome do arquivo vbs
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'colque o nome da pasta que você quer gerar o relatório, não deixe de usar a \ no final.
    objStartFolder = "d:\romeu\"

    Set objFolder = objFSO.GetFolder(objStartFolder)
    'Wscript.Echo objFolder.Path
    Set colFiles = objFolder.Files
    For Each objFile in colFiles
    'Wscript.Echo objFile.Name
    Next
    'Wscript.Echo

    ShowSubfolders objFSO.GetFolder(objStartFolder)



    Sub ShowSubFolders(Folder)
    For Each Subfolder in Folder.SubFolders
    Wscript.Echo Subfolder.Path
    Set objFolder = objFSO.GetFolder(Subfolder.Path)
    Set colFiles = objFolder.Files
    For Each objFile in colFiles
    On Error Resume Next
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    strFile = Subfolder.Path & "\" & objFile.Name
    Set colItems = objWMIService.ExecQuery _
    ("ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='" & strFile & "'}" _
    & " WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner")
    For Each objItem in colItems
    'Wscript.Echo objItem.ReferencedDomainName
    Wscript.Echo "Arquivo: " & objFile.Name & " Owner: " & objItem.AccountName
    Wscript.Echo
    Next
    Next
    Wscript.Echo "------------------------------------------------------------------------------------------------"
    Wscript.Echo
    ShowSubFolders Subfolder
    Next
    End Sub
    wscript.quit
    '////////////////////////////////////////////////////////fim\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    segunda-feira, 15 de setembro de 2008 22:08
  •  

    Muito obrigado,

     

    Esse script foi muito útil, agora vou implementar a questão do tamanho, pois preciso que ele exiba o relatórios dos arquivos de um determinado tamanho. ex.: arquivos de 200MB ou acima.

     

    Mais uma vez obrigado.

     

    Se eu melhorar ele eu posto aqui.

     

    Rafael

    terça-feira, 16 de setembro de 2008 15:34
  •  

     

    Após as melhorias o script ficou assim.

    Obrigado pela ajuda.

     

    'INICIO

     

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    objStartFolder = "C:\Temp\"

    dim filesys, filetxt
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Set filesys = CreateObject("Scripting.FileSystemObject")
    Set filetxt = filesys.OpenTextFile("C:\Temp\Relatório.txt", ForAppending, True)


    ShowSubfolders objFSO.GetFolder(objStartFolder)


    Sub ShowSubFolders(Folder)
     
     For Each Subfolder in Folder.SubFolders
        
           filetxt.WriteLine(Subfolder.Path)


    Set objFolder = objFSO.GetFolder(Subfolder.Path)
    Set colFiles = objFolder.Files
     
     For Each objFile in colFiles

    On Error Resume Next

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    strFile = Subfolder.Path & "\" & objFile.Name
    Set colItems = objWMIService.ExecQuery _
    ("ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='" & strFile & "'}" _
    & " WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner")

     For Each objItem in colItems
      
      if (objFile.Size/ 1048576 > 200) then
     
                 filetxt.WriteLine ("Arquivo: " & objFile.Name & " Dono: " & objItem.AccountName)

    end if
    Next
    Next
    filetxt.Close

     Wscript.Echo "FIM"

    ShowSubFolders Subfolder

    Next
    End Sub
    wscript.quit

    'FIM.

     

    --------------------------------------------------------------

     

    Rafael

    terça-feira, 16 de setembro de 2008 18:28
  •  Romeu Malacarne Avancini wrote:

    Só não está listando os arquivos que estão no primeiro nivel da pasta, mas lista de todas as subpastas.
    Se der uma melhorada nele posta aê pra gente.
    só para constar não expert em scripts...apenas usei o google, usando sintax em inglês tipo vbs get owner files, e consegui os dois scripts depois fui tentando molda-lo.



    '////////////////////////////////////////////////////inicio\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    'Lista o proprietario dos arquivos em subpastas
    'Adaptado por: romeu malacarne Avancini - rmavancini@gmail.com
    ':fontes: http://www.microsoft.com/technet/scriptcenter/resources/qanda/oct04/hey1007.mspx e http://www.microsoft.com/technet/scriptcenter/resources/qanda/oct04/hey1020.mspx
    'Modo de usar: execute o cmd. vá até o local do script e digite cscript.exe nome do arquivo vbs
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'colque o nome da pasta que você quer gerar o relatório, não deixe de usar a \ no final.
    objStartFolder = "d:\romeu\"

    Set objFolder = objFSO.GetFolder(objStartFolder)
    'Wscript.Echo objFolder.Path
    Set colFiles = objFolder.Files
    For Each objFile in colFiles
    'Wscript.Echo objFile.Name
    Next
    'Wscript.Echo

    ShowSubfolders objFSO.GetFolder(objStartFolder)



    Sub ShowSubFolders(Folder)
    For Each Subfolder in Folder.SubFolders
    Wscript.Echo Subfolder.Path
    Set objFolder = objFSO.GetFolder(Subfolder.Path)
    Set colFiles = objFolder.Files
    For Each objFile in colFiles
    On Error Resume Next
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    strFile = Subfolder.Path & "\" & objFile.Name
    Set colItems = objWMIService.ExecQuery _
    ("ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='" & strFile & "'}" _
    & " WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner")
    For Each objItem in colItems
    'Wscript.Echo objItem.ReferencedDomainName
    Wscript.Echo "Arquivo: " & objFile.Name & " Owner: " & objItem.AccountName
    Wscript.Echo
    Next
    Next
    Wscript.Echo "------------------------------------------------------------------------------------------------"
    Wscript.Echo
    ShowSubFolders Subfolder
    Next
    End Sub
    wscript.quit
    '////////////////////////////////////////////////////////fim\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

    Romeu, fiz algumas alterações....

    Sub ShowSubFolders(Folder)
    For Each objFile In colFiles
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    strFile = folder.Path & "\" & objFile.Name 
    Set colItems = objWMIService.ExecQuery _
    ( "ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='" & strFile & "'}" _
    & " WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner" )
    For Each objItem In colItems
    'Wscript.Echo objItem.ReferencedDomainName
    WScript.Echo "Arquivo: " & objFile.Name & " Owner: " & objItem.AccountName
    WScript.Echo 
    Next 
    Next
    For Each Subfolder In Folder.SubFolders
    WScript.Echo Subfolder.Path
    Set objFolder = objFSO.GetFolder(Subfolder.Path)
    Set colFiles = objFolder.Files
    For Each objFile In colFiles
    On Error Resume Next
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    strFile = Subfolder.Path & "\" & objFile.Name 
    Set colItems = objWMIService.ExecQuery _
    ( "ASSOCIATORS OF {Win32_LogicalFileSecuritySetting='" & strFile & "'}" _
    & " WHERE AssocClass=Win32_LogicalFileOwner ResultRole=Owner" )
    For Each objItem In colItems
    'Wscript.Echo objItem.ReferencedDomainName
    WScript.Echo "Arquivo: " & objFile.Name & " Owner: " & objItem.AccountName
    WScript.Echo 
    Next 
    Next
    WScript.Echo "------------------------------------------------------------------------------------------------"
    WScript.Echo
    ShowSubFolders Subfolder
    Next
    End Sub

    Agora ele lista os arquivos das pastas originais TB.
    Tem alguns excessos mas...dps é só veriricar as duplicidades. 
    Wink

    quinta-feira, 16 de outubro de 2008 19:25