none
Copiar vários arquivos usando vbscript RRS feed

  • Pergunta

  • Bom dia pessoal,

    Eu não sei nada de vbscript e espero que vocês possam me ajudar. Eu quero fazer a instalação de fonts nas estações de trabalho do ambiente e pra isso eu tô usando o script abaixo:

    Const FONTS = &H14& 
    ' Path And Name To Font 
    Dim Font :Font = "PATH_FONT_NAME_HERE" 
    ' Objects 
    Dim Folder, Fso, Shell 
    Set Fso = CreateObject("Scripting.FileSystemObject") 
    Set Shell = CreateObject("Shell.Application") 
    Set Folder = Shell.Namespace(FONTS) 
    ' Check For File Exists 
    If Fso.FileExists(Font) Then 
        Folder.CopyHere Font 
    Else 
        MsgBox "Missing " & Font,4128,"Missing Font" 
    End If 

    Ele funciona, o problema é que eu queria instalar varias fonts que estão dentro da pasta de origem sem ter que fazer um script para copiar cada fonte. Não tem como eu filtrar a extensão de arquivo .fft dentro da pasta de origem?


    sexta-feira, 28 de junho de 2013 13:42

Respostas

  • Carlos,

    O seu script está preparado para instalar uma fonte por vez, nele você informa o caminho completo do arquivo de fonte na várivel FONT.

    O que tem de ser feito é usar um script que lista todos os arquivos de dentro de uma pasta, e no loop pegar o caminho do arquivo e rodar o seu script.

    Veja se isso atende:

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    objStartFolder = "C:\temp"
    
    Set objFolder = objFSO.GetFolder(objStartFolder)
    
    Set colFiles = objFolder.Files
    For Each objFile in colFiles
        Wscript.Echo "Arquivo: " & objFile.Path
    
    
        'Aqui comeca o seu script
        Const FONTS = &H14& 
        ' Path And Name To Font 
        Dim Font :Font = objFile.Path 'AQUI EU USO O ARQUIVO ATUAL DO LOOP
        ' Objects 
        Dim Folder, Fso, Shell 
        Set Fso = CreateObject("Scripting.FileSystemObject") 
        Set Shell = CreateObject("Shell.Application") 
        Set Folder = Shell.Namespace(FONTS) 
        ' Check For File Exists 
        If Fso.FileExists(Font) Then 
            Folder.CopyHere Font 
        Else 
            MsgBox "Missing " & Font,4128,"Missing Font" 
        End If 
    
    
    
    Next

    Não se esqueça de alterar a váriavel objStartFolder que é o caminho da pasta onde estão as fontes que você quer copiar.

    Ref.:

    How Can I Get a List of All the Files in a Folder and Its Subfolders?

    http://blogs.technet.com/b/heyscriptingguy/archive/2004/10/20/how-can-i-get-a-list-of-all-the-files-in-a-folder-and-its-subfolders.aspx


    Fábio de Paula Junior

    sábado, 29 de junho de 2013 20:41
    Moderador