none
Script para localizar arquivos pelo seu tipo RRS feed

  • Pergunta

  •  

    Boa tarde,

     

    Gostaria de saber se tem como localizar os arquivos especificando seu tipo, por exemplo:

     

    GOSTARIA DE LOCALIZAR ARQUIVO DE AUDIO (MP3, MP4, WAV,ETC..)

    GOSTARIA DE LOCALIZAR ARQUIVO DE VIDEO (MPEG, AVI, ETC..)

     

    Como fosse efetuar levantamento do micro utilizamos %computername% usuário %username%.

     

    Tem algo parecido para arquivos?

     

    att,

     

    Hermilano

     

    quinta-feira, 10 de maio de 2007 20:56

Respostas

  • Cara esse funfa! Mas vc deve usar cscript ou alterar o cod para ele gravar num txt.O unico problema é que quando tenta acessar a pasta System Volume Information ele dá erro pois não tem permissão para ler o conteúdo dela.Talvez rodando com script de maquina ele rode normalmente pois vai usar as credenciais de system.Bom talves alguém do forum possa até otimizar o mesmo para a gente. Ou Aruumar algo bem melhor (eu tinha parado de trabalhar nele pois estava sem tempo).GRande abraço
    Também da para usar where no 2k3


    strComputer = "."
    Set FSO = CreateObject("Scripting.FileSystemObject")
    DIM FolderL
    DIM EXT(4)
    EXT(0) = "mp3"
    EXT(1) = "wmv"
    EXT(2) = "avi"
    EXT(3) = "mpeg"
    EXT(4) = "vbs"


    FolderL = "c:\"

    X = "0"

    ShowSubfolders FSO.GetFolder(FolderL)

    Sub ShowSubFolders(Folder)


    For Each Subfolder in Folder.SubFolders
    Set folder = fso.getfolder(Subfolder.Path)

    FOR x = 0 to 4

    For Each File in Folder.Files

    If fso.GetExtensionName(File)= EXT(x) Then
    wscript.echo "Arquivo: " & File & " Posição array: " & x & " Conteúdo " & EXT(x)
    END IF

    NEXT


    NEXT
    ShowSubFolders Subfolder
    Next
    End Sub

    Wscript.quit
    quinta-feira, 10 de maio de 2007 22:41

Todas as Respostas

  • Cara esse funfa! Mas vc deve usar cscript ou alterar o cod para ele gravar num txt.O unico problema é que quando tenta acessar a pasta System Volume Information ele dá erro pois não tem permissão para ler o conteúdo dela.Talvez rodando com script de maquina ele rode normalmente pois vai usar as credenciais de system.Bom talves alguém do forum possa até otimizar o mesmo para a gente. Ou Aruumar algo bem melhor (eu tinha parado de trabalhar nele pois estava sem tempo).GRande abraço
    Também da para usar where no 2k3


    strComputer = "."
    Set FSO = CreateObject("Scripting.FileSystemObject")
    DIM FolderL
    DIM EXT(4)
    EXT(0) = "mp3"
    EXT(1) = "wmv"
    EXT(2) = "avi"
    EXT(3) = "mpeg"
    EXT(4) = "vbs"


    FolderL = "c:\"

    X = "0"

    ShowSubfolders FSO.GetFolder(FolderL)

    Sub ShowSubFolders(Folder)


    For Each Subfolder in Folder.SubFolders
    Set folder = fso.getfolder(Subfolder.Path)

    FOR x = 0 to 4

    For Each File in Folder.Files

    If fso.GetExtensionName(File)= EXT(x) Then
    wscript.echo "Arquivo: " & File & " Posição array: " & x & " Conteúdo " & EXT(x)
    END IF

    NEXT


    NEXT
    ShowSubFolders Subfolder
    Next
    End Sub

    Wscript.quit
    quinta-feira, 10 de maio de 2007 22:41
  • Galera o script abaixo funciona perfeitamente mas podemos melhorar, mudei poucas coisa pois já o tinha pronto para buscar mp3, implementei apenas os case's, quem tiver um pouco mais de tempo pode mexer à vontade. Da maneira que está ele demora um pouquinho, mudando principalmente a maneira de enxergar as extensões de repente através de um Sub bem elaborado ele fique show de bola.


    'Script para enumerar Arquivos no sistema local
    'Autor: Welington Lima
    'Versão: 1.0
    'Data: 10/05/2007

    Dim intTotalSpace
    intTotalSpace=0

    set onet = CreateObject("wscript.Network")
    strComputer = onet.computername
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    set objTextFile = objFSO.CreateTextFile("c:\Arquivos em_" & strcomputer & ".txt", True)

    Set objWMIService = GetObject("winmgmts:\\").ExecQuery( _
    "SELECT * FROM CIM_DataFile WHERE Drive = 'C:'")
    For Each objItem in objWMIService
    select case objItem.Extension
    case "mp3"
    call escrever()
    case "avi"
    call escrever()
    case "wmv"
    call escrever()
    case "mpeg"
    end select

    Next
    objTextFile.writeline "Total de Espaço Usado com estes arquivos: " & int(((intTotalSpace)/1024)/1024) & " MB"
    Wscript.echo "Pronto"

    function escrever()
    objTextFile.writeline objItem.FileType & ": " & objItem.Name & vbcrlf & _
    "Tamanho do arquivo: " & CCur((objItem.FileSize)/(1024*1024)) & " MB" & vbcrlf
    intFileSize=objItem.FileSize
    intTotalSpace= intTotalSpace + intFileSize

    end function


    Abraços
    sexta-feira, 11 de maio de 2007 02:57
  • Obrigado pelas respotas vai me ajudar e muito, agora uma pergunta tem como identificar um arquivo renomeado no ato que roda um script? por que um analista mais esperto pode criar um script para renomear todas as musicas e videos, tem como pegar essa informação sem ter um sistema rodando direto no sistema operacional?
    sexta-feira, 11 de maio de 2007 14:50
  • Pelo que eu entedi vc quer ler o arquivo pelo cabeçalho? Vixi!!

    Talves !!! Digo talves pq nunca fiz isso. Mas no meu caso eu tentaria colocar arquivos e as extenções para serem monitorados pelo meu antivirus (no meu caso uso ePO) Mas teria que testar. Estou te falado isso pq antivirus lê cabeçalho e dentro de arquivos zip o que facilitaria os problemas com usuários mais avançados.

    Não sei como é a sua realidade e nem sei se outros antivirus gerenciaveis permitem este tipo de configuração.

    Procure por um script que leia o cabeçalho de arquivos (sinceramente não tive tempo de procurar) e agregue aos scripts que lhe foram apresentados.

    E se funcionar posta aê pra gente! abraço.

    Boa sorte.

     

    sexta-feira, 11 de maio de 2007 15:13
  • Olá,

    Exatamente. É perfeitamente possível ler o cabeçalho de arquivos .MP3. Sendo assim, é possível verificar arquivos, sem se preocupar com a extensão dele. No entanto, ainda há alguns problemas:

    1) Não existem só arquivos MP3 no mundo. E para cada tipo de arquivo, uma estrutura diferente pra testar. Isso torna praticamente impossível deter todo tipo de música. Dá pra pegar os mais comuns, mas vai dar trabalho.

    2) Se o usuário for um pouco mais inteligente, ele não vai simplesmente trocar a extensão. Vai também concatenar os arquivos (usando o comando tar do linux, por exemplo) ou mesmo compactar com ZIP, RAR ou outro formato. Aí, o problema complica ainda mais. Além de ter que procurar no cabeçalho pra descobrir que é um ZIP, teremos que ver a lista de arquivos pra ver se há MP3 dentro dele. Ainda mais: ele pode trocar a extensão também, dentro do ZIP. Assim, teríamos que descompactar o ZIP e testar cada arquivo.

    3) Ainda que tudo seja possível: o tempo que vai levar pra varrer um diretório com muitos arquivos vai ser grande. Além disso, há o risco dos falsos positivos: arquivos de outros formatos que coincidentemente têm os mesmos bytes no cabeçalho.

    Enfim, é um problema de nível intermediário... dá pra fazer, mas leva tempo e, qualquer diferença nos padrões, joga todo o nosso trabalho por água abaixo. Scripts pra ler MP3 já existem... mas não creio que usar VBS nesse caso seja a saída mais rápida. Seria mais interessante criar um programa em C/C++ mesmo.

    Não é mais simples implementar saídas "legais" para isso? Um planejamento do uso dos computadores, com código de conduta pra todos os funcionários e tudo mais... não funciona?


    []s,

    --
    Vinicius Canto <scripterbr_at_gmail_dot_com>
    MVP Visual Developer - Scripting
    MCP Windows 2000 Server, Windows XP e SQL Server 2000
    Blog sobre Scripting: http://viniciuscanto.blogspot.com
          
    sexta-feira, 11 de maio de 2007 21:48
    Moderador
  • Concordo com o Vinicius!  Com relação ao terceiro paragrafo:

    envolva o seu RH e crie regras de segurnaça da infomação e juntamente com o seu gerente (vc vai precisar de gente grande do seu lado) faça-as entrarem em vigor, porém de uma forma menos traumática possivel.

    Explique que caso ele não tenha pago direitos autorais das musicas ele pode estar colocando a empresa (pois o micro é da empresa) em situação ilegal.

    Cara na internet vc vai achar "x" argumentos para isso. Mas tenha sempre em mente que quando vc faz esse tipo de coisa algumas pessoas podem levar para o lado pessoal.

    Segue um link de um tcc bem interessante:

    http://www.projetoderedes.com.br/apostilas/arquivos/treinando_macacos_educando_pessoas.zip

     

     

    Vinicius vc tem algum exemplo de codigo em vbs que lê cabeçalho ?

    Valeu cara.

     

     

    segunda-feira, 14 de maio de 2007 12:28
  • Boa noite,

     

    Consegui através do meu professor a informação que para encontrar o cabeçalho do arquivo tem que efetuar uma pesquisa como magic number. Como exemplo abaixo. Irei pesquisar uma relação de arquivos, o mais encontrados nas auditorias, e irei informar aqui.

     

    Obrigado pela ajuda.

     

     

    Some examples:

    • Compiled Java class files (bytecode) start with 0xCAFEBABE on big-endian systems.
    • GIF image files have the ASCII code for 'GIF89a' (0x474946383961) or 'GIF87a' (0x474946383761)
    • JPEG image files begin with 0xFFD8FF, and JPEG/JFIF files contain the ASCII code for 'JFIF' (0x4A464946) or JPEG/Exif files contain the ASCII code for 'Exif' (0x45786966) beginning at byte 6 in the file, followed by more metadata about the file.
    • PNG image files begin with an 8-byte signature which identifies the file as a PNG file and allows immediate detection of some common file-transfer problems: \211 P N G \r \n \032 \n (0x89504e470d0a1a0a)
    • Standard MIDI music files have the ASCII code for 'MThd' (0x4D546864) followed by more metadata about the file.
    • Unix script files usually start with a shebang, '#!' (0x2321, or 0x2123 on little-endian processors) followed by the path to an interpreter.
    • PostScript files and programs start with '%!' (0x2521).
    • PDF files start with '%PDF'.
    • Old MS-DOS .exe files and the newer Microsoft Windows PE (Portable Executable) .exe files start with the ASCII string 'MZ' (0x4D5A), the initials of the designer of the file format, Mark Zbikowski. The definition allows 'ZM' as well but it is quite uncommon.
    • The Berkeley Fast File System superblock format is identified as either 0x19540119 or 0x011954 depending on version; both represent the birthday of author Marshall Kirk McKusick.
    • Executables for the Game Boy and Game Boy Advance handheld video game systems have a 48-byte or 156-byte magic number, respectively, at a fixed spot in the header. This magic number encodes a bitmap of the Nintendo logo.
    • Zip files begin with 'PK', the initials of Phil Katz, author of DOS compression utility PKZIP.
    • Old Fat binaries (containing code for both 68K processors and PowerPC processors) on Classic Mac OS contained the ASCII code for 'Joy!' (0x4A6F7921) as a prefix.
    • TIFF files begin with either "II" or "MM" depending on the byte order (II for Intel, or little endian, MM for Motorola, or big endian), followed by 0x2A00 or 0x002A (decimal 42 as a 2-byte integer in Intel or Motorola byte ordering).
    • Unicode text files, encoded with UTF-8, often start with \xEF\xBB\xBF ( in a Latin-1 text editor), the UTF-8 encoding of the Byte Order Mark. If they are encoded with UTF-16, they often start with the Byte Order Mark coded as \xFE\xFF or \xFF\xFE depending on endianness.
    quinta-feira, 17 de maio de 2007 00:19
  • Concordo perfeitamente com você. Mas analisar somente o magic-number (que nada mais é do que um padrão dentro do arquivo) pode ser rápido, mas não eficiente. Eu posso simplesmente criar um arquivo TXT com MZ no início, e se eu renomear para .EXE ele vai ser "detectado" como um executável, quando na verdade não o é. Observar um, dois ou 4 bytes não é suficiente para detectar um arquivo pelo tipo.

    Por outro lado, se eu quiser verificar se um dado arquivo é realmente um MP3 ou coisa do gênero, vou ter que procurar mais do que magic-numbers. O problema é que, quanto mais específica fica a busca, mais lento fica o sistema. Será necessário abrir todos os arquivos de um diretório para escrita e procurar determinados bytes nele. Se você considerar que eles ficam espalhados no disco e que são vários deles, o tempo de seek passa a ser considerável e varrer um diretório com alguns arquivos passa a ficar lento.

    Isso sem contar na possibilidade de arquivos compactados/concatenados, como Zip, RAR e Tar. É necessário muito mais do que dois bytes para descobrir qual é o conteúdo do Zip. Essas possibilidades tornam inviável esse sistema...

    Para ficar rápido, teríamos que partir para algo mais baixo nível, como C/C++ por exemplo. Mas ainda assim, o trabalho de abrir e fechar milhares de arquivos vai gastar bastante tempo do programa.

    Quanto aos dados do MP3, recomendo os seguintes links:

    http://en.wikipedia.org/wiki/MP3#File_structure
    http://www.u229.no/stuff/mp3/cReadMP3.txt

    []s,

    Vinicius Canto <scripterbr_at_gmail_dot_com>
    MVP Visual Developer - Scripting
    MCP Windows 2000 Server, Windows XP e SQL Server 2000
    Blog sobre scripting: http://viniciuscanto.blogspot.com

    domingo, 20 de maio de 2007 14:15
    Moderador
  • Pessoal,

     

    Alguém teria um script que localiza arquivos repetidos (duplicados, triplicados, etc.) e retornasse essa informação juntamente com a pasta onde estão localizados?

     

    Obrigado!

    quarta-feira, 30 de maio de 2007 17:37
  • Só uma pergunta ?

    Você usa 2003 no seu file server?

    se sim instala o r2 e usa o recurso nativo para isso.

    Ps.: acho que vc deveria abrir um novo post para sua pergunta....

    abraço boa sorte.

    quarta-feira, 30 de maio de 2007 18:17
  • Romeu, muito bacana esse script.

    Eu elaborei um post aqui no forum , mas nao me responderam que era um script que modificaria, além desse que vc colocou ai , que seria pra modificar o atributo do arquivo, ou seja, quando o usuario gravasse um mp3, por exemplo modificaria a permissão e ele nao conseguiria exclui-lo mais.

    ja viu algo parecido com isso ?

     

    Aguardo

    quarta-feira, 20 de fevereiro de 2008 11:46
  • Macedo, você está querendo uma que um usuário ao gravar um arquivo com extensão .mp3, que ele não consiga mais deletar ela? Se for vamos cair com um velho problema nosso, que é o tal do poder gravar e não poder deletar, tem vários tópicos no fórum discutindo sobre esse assunto e esse processo é meio complicado de se fazer Wink

    quarta-feira, 20 de fevereiro de 2008 19:26
  • Pois é ...andei pesquisando e nao fui muito longe. Vou adotar um método mais simples, ou seja, vou primeiramente bloquear todo o pessoal d gravar qualquer arquivo mp3, avi, etc....e em seguida  localizar todas as essas extensões e tirar a permissão e ou excluir.

     

    Mas Valeu pela dica.

     

    sexta-feira, 22 de fevereiro de 2008 17:55
  • Sem problemas, vai ser melhor mesmo, você pode fazer assim também, deixar um script no schedule para varrer o HD e indo deletando esses arquivos diariamente Wink, mas também vamos cair em outro problema que já foi discutido se caso o usuário renomear a extensão do arquivo isso não vai adiantar nada, é uma coisa complicada, bloquear músicas, videos e adjacentes na rede é mais dificil que descobrir a cura da AIDS Big Smile ou você gasta processamento com programas que lêem o cabeçalho do arquivo ou tenta mitigar o problema com soluções que podem ser burladas se o usuário usar a cabeça

    sexta-feira, 22 de fevereiro de 2008 18:04
  • Minha simples solução arrumada aqui:

    @echo off

    set delpath=path
    set filetype1=*.tar
    set filetype2=*.zip
    set days=03

    cd %delpath%

    Forfiles /S /P %delpath% /M %filetype1% /D -%days% /C "cmd /c del /q @path"
    Forfiles /S /P %delpath% /M %filetype2% /D -%days% /C "cmd /c del /q @path"

    Apago a coisa toda e pronto.


    sexta-feira, 22 de março de 2013 15:56