Serviço ScriptForge.FileSystem

O serviço FileSystem inclui rotinas para manusear arquivos e pastas. A seguir estão alguns exemplos do que pode ser feito com este serviço:

note

Os métodos do serviço FileSystem são baseados principalmente na interface UNO XSimpleFileAccess.


Definições

A tabela abaixo lista os principais parâmetros usados pela maior parte dos métodos do serviço FileSystem service.

Parâmetro

Descrição

FileName

Nome completo do arquivo incluindo o caminho sem o separador de pastas ao final.

FolderName

Nome completo da pasta incluindo o caminho. Pode ou não conter o caractere separador de pastas ao final.

Name

Último componente do Nome da Pasta ou Nome do Arquivo incluindo sua extensão. Este parâmetro é sempre expresso usando a notação nativa do sistema operacional em uso.

BaseName

Último componente do Nome da Pasta ou Nome do Arquivo sem sua extensão.

NamePattern

Qualquer um dos nomes acima contendo caracteres curinga em seu último componente. Os seguintes caracteres curinga são admitidos:

  • "?" representa qualquer caractere único

  • "*" representa zero, um ou múltiplos caracteres


tip

O serviço FileSystem permite executar operações em múltiplos arquivo ao mesmo tempo. Ao usar padrões de nomes, scripts pode copiar, mover ou apagar múltiplos arquivos. Por outro lado, métodos internos da linguagem Basic podem manipular apenas um arquivo de cada vez.


Notação de Nome de Arquivo

A notação usada para expressar nomes de arquivos e pastas, tanto para argumentos como para valores retornados, é definida pela propriedade FileNaming do serviço FileSystem.

Em suma, os possíveis tipos de representação são "URL" (notação de arquivo URL), "SYS" (notação do sistema operacional) e "ANY" (padrão). Veja mais informações abaixo.

tip

Um exemplo de notação URL é file:///C:/Documents/my_file.odt. Sempre que possível considere usar a notação URL por ser uma alternativa mais portável.


warning

O uso do atalho "~" (til), que é comum em sistemas operacionais baseados em Linux, não é suportado para expressar caminhos para uma pasta ou nome de arquivo. Em vez de usar "~/Documents/my_file.odt" use o caminho completo "/home/user/Documents/my_file.odt".


Invocação do serviço

Os trechos de código abaixo invocam o serviço FileSystem. O método BuildPath foi usado como um exemplo.

Em Basic

      GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
      Dim FSO As Object
      Set FSO = CreateScriptService("FileSystem")
      FSO.BuildPath(...)
    
Em Python

      from scriptforge import CreateScriptService
      fs = CreateScriptService("FileSystem")
      fs.BuildPath(...)
    

Acessando o Sistema Virtual de Arquivos de um Documento

Os arquivos de documentos do LibreOffice são arquivos ZIP compactados que contêm os arquivos e pastas que representam o conteúdo real do documento. Enquanto o documento estiver aberto, é possível acessar esse sistema de arquivos virtual, explorar sua estrutura, bem como ler e criar arquivos e pastas.

O exemplo a seguir mostra como criar um arquivo de texto chamado myFile.txt e armazená-lo no sistema virtual de arquivos do documento.

Em Basic

    GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
    Dim oDoc As Object, fso As Object, oFile As Object
    Dim sRoot, sFile, sMyDir
    Set fso = CreateScriptService("FileSystem")
    Set oDoc = CreateScriptService("Document", ThisComponent)
    ' Obtém o caminho para a raiz do sistema de arquivos virtual em notação URL
    sRoot = oDoc.FileSystem()
    sMyDir = sRoot & "myDir"
    ' Cria a pasta "myDir" se ela ainda não existir
    If Not fso.FolderExists(sMyDir) Then
        fso.CreateFolder(sMyDir)
    End If
    ' Cria o arquivo e escreve algum texto dentro dele
    sFile = fso.BuildPath(sMyDir, "myFile.txt")
    oFile = fso.CreateTextFile(sFile)
    oFile.WriteLine("Hello!")
    oFile.CloseFile()
  
Em Python

    from scriptforge import CreateScriptService
    bas = CreateScriptService("Basic")
    doc = CreateScriptService("Document", bas.ThisComponent)
    fso = CreateScriptService("FileSystem")
    sRoot = doc.FileSystem
    sMyDir = sRoot + "myDir"
    if not fso.FolderExists(sMyDir):
        fso.CreateFolder(sMyDir)
    sFile = fso.BuildPath(sMyDir, "myFile.txt")
    oFile = fso.CreateTextFile(sFile)
    oFile.WriteLine("Hello!")
    oFile.CloseFile()
  

Em geral, todos os métodos do serviço FileSystem podem ser usados para manipular arquivos no sistema virtual de arquivos do documento. No entanto, aplicam-se as seguintes restrições:

note

O caminho para o sistema virtual de arquivos não é um endereço físico no disco rígido do computador. Ele só pode ser acessado a partir de um script LibreOffice e só existe enquanto o arquivo do documento estiver aberto.


Propriedades

Nome

Somente leitura

Tipo

Descrição

FileNaming

Não

String

Define ou retorna a notação atual para arquivos e pastas, podendo ser "ANY", "URL" ou "SYS":

  • "ANY": (padrão) os métodos do serviço FileSystem aceitam tanto notação URL como a notação do sistema operacional em uso para argumentos de entrada, porém os valores de retorno sempre serão Strings URL.

  • "URL": os métodos do serviço FileSystem assumem que a notação URL será usada para argumentos de entrada e retornarão Strings URL.

  • "SYS": os métodos do serviço FileSystem assumirão que a notação do sistema operacional em uso será usada tanto para os argumentos de entrada como para os valores de retorno.

Uma vez definida, a propriedade FileNaming permanecerá inalterada até o final da sessão LibreOffice ou até que seja definida novamente.

ConfigFolder

Sim

String

Retorna a pasta de configuração do LibreOffice.

ExtensionsFolder

Sim

String

Retorna a pasta onde as extensões estão instaladas.

HomeFolder

Sim

String

Retorna a pasta do usuário.

InstallFolder

Sim

String

Retorna a pasta de instalação do LibreOffice.

TemplatesFolder

Sim

String

Retorna a pasta contendo os arquivos de modelos do sistema.

TemporaryFolder

Sim

String

Retorna a pasta de arquivos temporários definida nas configurações de caminho do LibreOffice.

UserTemplatesFolder

Sim

String

Retorna a pasta contendo os arquivos de modelos definidos pelo usuário.


Lista de Métodos no Serviço FileSystem

BuildPath
CompareFiles
CopyFile
CopyFolder
CreateFolder
CreateTextFile
DeleteFile
DeleteFolder
ExtensionFolder

FileExists
Files
FolderExists
GetBaseName
GetExtension
GetFileLen
GetFileModified
GetName
GetParentFolderName

GetTempName
HashFile
MoveFile
MoveFolder
Normalize
OpenTextFile
PickFile
PickFolder
SubFolders


BuildPath

Concatena um caminho para uma pasta e o nome de um arquivo e retorna o nome completo do arquivo com um separador de pastas válido. O separador de pastas é adicionado apenas se necessário.

Sintaxe:

svc.BuildPath(foldername: str, name: str): str

Parâmetros:

foldername: Caminho com o qual o parâmetro name será combinado. O caminho específico não precisa ser uma pasta existente.

name: Nome do arquivo a ser concatenado com o parâmetro foldername. Este parâmetro usa a notação do sistema operacional em uso.

Exemplo:

Em Basic

      Dim FSO as Object
      Set FSO = CreateScriptService("FileSystem")
      Dim aFileName as String
      FSO.FileNaming = "URL"
      aFileName = FSO.BuildPath("file:///home/user", "sample file.odt")
      ' file:///home/user/sample%20file.odt
    
Em Python

      fs = CreateScriptService("FileSystem")
      fs.FileNaming = "URL"
      aFileName = fs.BuildPath("file:///home/user", "sample file.odt")
      # file:///home/user/sample%20file.odt
    

CompareFiles

Compara dois arquivos e retorna True quando eles parecerem idênticos.

Dependendo do valor do argumento comparecontents, a comparação entre os dois arquivos pode ser baseada apenas nos atributos dos arquivos (tais como a última data de modificação), ou baseada nos conteúdos dos arquivos.

Sintaxe:

svc.CompareFiles(filename1: str, filename2: str, comparecontents: bool = False): bool

Parâmetros:

filename1, filename2: Arquivos a serem comparados.

comparecontents: Se True, os conteúdos dos arquivos são comparados (Padrão = False).

Exemplo:

Em Basic

      FSO.FileNaming = "SYS"
      If FSO.CompareFiles("C:\myFile1.txt", "C:\myFile2.txt", CompareContents := False) Then
          ' ...
      End If
    
Em Python

      fs.FileNaming = "SYS"
      if fs.CompareFiles(r"C:\myFile1.txt", r"C:\myFile2.txt", comparecontents = False):
          # ...
    

CopyFile

Copia um ou mais arquivos de uma localização para outra. Retorna True se pelo menos um arquivo foi copiado, ou retorna False se um erro ocorreu.

Um erro também ocorrerá se o parâmetro source usar caracteres curinga e não corresponder a arquivo algum.

O método é interrompido imediatamente se encontrar um erro. O método não é capaz de voltar atrás ou desfazer mudanças feitas antes da ocorrência do erro.

Sintaxe:

svc.CopyFile(source: str, destination: str, overwrite: bool = True): bool

Parâmetros:

source: Pode ser um nome de arquivo (FileName) ou um padrão de nomes (NamePattern) indicando um ou mais arquivos a serem copiados.

destination: Pode ser um nome de arquivo (FileName) especificando onde o arquivo único informado no argumento source deverá ser copiado, ou um nome de pasta (FolderName) dentro do qual os múltiplos arquivos definidos em source serão copiados.

overwrite: Se True (padrão), arquivos podem ser sobrescritos. O método falhará se destination for somente leitura, independente do valor especificado para overwrite.

Exemplo:

Nos exemplos abaixo a primeira linha copia um arquivo único, ao passo que a segunda linha copia múltiplos arquivos usando caracteres coringa.

Em Basic

      FSO.CopyFile("C:\Documents\my_file.odt", "C:\Temp\copied_file.odt")
      FSO.CopyFile("C:\Documents\*.*", "C:\Temp\", Overwrite := False)
    
Em Python

      fs.CopyFile(r"C:\Documents\my_file.odt", r"C:\Temp\copied_file.odt")
      fs.CopyFile(r"C:\Documents\*.*", r"C:\Temp", overwrite = False)
    
note

Esteja ciente de que as subpastas e seus conteúdos não são copiados quando curingas são usados no argumento source.


CopyFolder

Copia uma ou mais pastas de uma localização para outra. Retorna True se pelo menos uma pasta foi copiada, ou retorna False se um erro ocorreu.

Um erro também ocorrerá se o parâmetro source usar caracteres curinga e não corresponder a pasta alguma.

O método é interrompido imediatamente se encontrar um erro. O método não é capaz de voltar atrás ou desfazer mudanças feitas antes da ocorrência do erro.

Sintaxe:

svc.CopyFolder(source: str, destination: str, overwrite: bool = True): bool

Parâmetros:

source: Pode ser um nome de pasta (FolderName) ou um padrão de nomes (NamePattern) indicando uma ou mais pastas a serem copiadas.

destination: Especifica o nome da pasta (FolderName) dentro da qual a pasta única ou múltiplas pastas definidas no parâmetro source serão copiadas.

overwrite: Se True (padrão), arquivos podem ser sobrescritos. O método falhará se destination for somente leitura, independente do valor especificado para overwrite.

Exemplo:

Nos exemplos abaixo todos os arquivos, pastas e subpastas são copiados.


      ' Basic
      FSO.CopyFolder("C:\Documents\*", "C:\Temp\", Overwrite := False)
    

      # Python
      fs.CopyFolder(r"C:\Documents\*", r"C:\Temp", overwrite = False)
    

CreateFolder

Cria a pasta especificada em FolderName. Retorna True se a pasta pode ser criada com sucesso.

Se a pasta especificada tem uma pasta pai que não existe, então ela é criada.

Sintaxe:

svc.CreateFolder(foldername: str): bool

Parâmetros:

foldername: String representando a pasta a ser criada. Se a pasta já existir, uma exceção é lançada.

Exemplo:


      ' Basic
      FSO.CreateFolder("C:\NewFolder")
    

      # Python
      fs.CreateFolder(r"C:\NewFolder")
    

CreateTextFile

Cria o arquivo especificado e retorna uma instância do serviço TextStream que pode ser usada para escrever no arquivo.

O método retorna um objeto Null se um erro ocorreu.

Sintaxe:

svc.CreateTextFile(filename: str, overwrite: bool = True, encoding: str = 'UTF-8'): svc

Parâmetros:

filename: Nome do arquivo a ser criado.

overwrite: Valor booleano que determina se filename pode ser sobrescrito (Padrão = True).

encoding: Codificação de caracteres a ser usada. A codificação padrão é "UTF-8".

Exemplo:

Em Basic

      Dim myFile As Object
      FSO.FileNaming = "SYS"
      Set myFile = FSO.CreateTextFile("C:\Temp\ThisFile.txt", Overwrite := True)
    
Em Python

      fs.FileNaming = "SYS"
      myFile = fs.CreateTextFile(r"C:\Temp\ThisFile.txt", overwrite = True)
    
note

Para saber mais sobre os nomes dos conjuntos de caracteres, visite a página IANA's Character Set (página somente no inglês). Note que o LibreOffice não implementa todos os conjuntos de caracteres existentes.


DeleteFile

Apaga um ou mais arquivos. Retorna True se ao menos um arquivo pode ser apagado ou False se um erro ocorreu.

Um erro também ocorrerá se o parâmetro filename usar caracteres curinga e não corresponder a arquivo algum.

Os arquivos a serem apagados não podem ser somente leitura.

O método é interrompido imediatamente se encontrar um erro. O método não é capaz de voltar atrás ou desfazer mudanças feitas antes da ocorrência do erro.

Sintaxe:

svc.DeleteFile(filename: str): bool

Parâmetros:

filename: Pode ser um nome de arquivo (FileName) ou um padrão de nomes (NamePattern) indicando um ou mais arquivos a serem apagados.

Exemplo:

Nos exemplos abaixo apenas arquivos são apagados. Subpastas não são apagadas.


      ' Basic
      FSO.DeleteFile("C:\Temp\*.docx")
    

      # Python
      fs.DeleteFile(r"C:\Temp\*.docx")
    

DeleteFolder

Apaga uma ou mais pastas. Retorna True se ao menos uma pasta foi apagada ou False se um erro ocorreu.

Um erro também ocorrerá se o parâmetro foldername usar caracteres curinga e não corresponder a pasta alguma.

As pastas a serem apagadas não podem ser somente leitura.

O método é interrompido imediatamente se encontrar um erro. O método não é capaz de voltar atrás ou desfazer mudanças feitas antes da ocorrência do erro.

Sintaxe:

svc.DeleteFolder(foldername: str): bool

Parâmetros:

foldername: Pode ser um nome de pasta (FolderName) ou um padrão de nomes (NamePattern) indicando uma ou mais pastas a serem apagadas.

Exemplo:

Nos exemplos a seguir apenas pastas e seus conteúdos são apagados. Arquivos na pasta pai "C:\Temp" não são apagados.


      ' Basic
      FSO.DeleteFolder("C:\Temp\*")
    

      # Python
      fs.DeleteFolder(r"C:\Temp\*")
    

ExtensionFolder

Retorna uma string contendo o diretório onde a extensão especificada está instalada.

note

O valor atual da propriedade SF_FileSystem.FileNaming é usado para determinar a notação da string retornada.


tip

Use a propriedade Extensions do serviço Platform para obter um Array de strings contendo as IDs de todas as extensões instaladas.


Sintaxe:

svc.ExtensionFolder(extension: str): str

Parâmetros:

extension: String com a ID da extensão.Se a extensão não estiver instalada, uma exceção é lançada.

Exemplo:

Os exemplos abaixo em Basic e Python retornam a pasta onde a extensão APSO está instalada.


      ' Basic
      sFolder = FSO.ExtensionFolder("apso.python.script.organizer")
      ' file:///home/username/.config/libreoffice/4/user/uno_packages/cache/uno_packages/lu10833wz3u2i.tmp_/apso_1_2_7.oxt
    

      # Python
      sFolder = fs.ExtensionFolder("apso.python.script.organizer")
    

FileExists

Retorna True se um dado nome de arquivo é válido e existe, caso contrário o método retorna False.

Se o parâmetro filename for na verdade um nome de pasta existente, o método retorna False.

Sintaxe:

svc.FileExists(filename: str): bool

Parâmetros:

filename: String representando o arquivo a ser testado.

Exemplo:

Em Basic

      FSO.FileNaming = "SYS"
      If FSO.FileExists("C:\Documents\my_file.odt") Then
          '...
      End If
    
Em Python

      fs.FileNaming = "SYS"
      if fs.FileExists(r"C:\Documents\my_file.odt"):
          # ...
    

Files

Retorna um Array indexado em zero com os arquivos armazenados em uma pasta. Cada entrada no Array é uma String contendo o caminho completo e o nome do arquivo.

Se o argumento foldername especificar uma pasta que não existe, uma exceção será lançada.

A lista resultante pode ser filtrada com caracteres curinga.

Sintaxe:

svc.Files(foldername: str, filter: str = '', includesubfolders: bool = False): str[0..*]

Parâmetros:

foldername: String representando uma pasta. A pasta deve existir. Este argumento não pode designar um arquivo.

filter: String contendo caracteres curinga ("?" e "*") que serão aplicados à lista de arquivos resultante (Padrão = "").

includesubfolders: Defina este argumento como True para incluir o conteúdo das subpastas (Padrão = False).

Exemplo:

Em Basic

      Dim filesList As Variant, file As String
      FSO.FileNaming = "SYS"
      ' Retorna todos os arquivos que correspondem ao filtro "*.txt", incluindo arquivos em subpastas
      filesList = FSO.Files("/home/user/", "*.txt", IncludeSubfolders := True)
      For Each file In filesList
          ' ...
      Next file
    
Em Python

      fs.FileNaming = "SYS"
      filesList = fs.Files("/home/user/", "*.txt", includesubfolders = True)
      for file in fileList:
          # ...
    

FolderExists

Retorna True se o nome de pasta especificado em FolderName é válido e existe, caso contrário o método retorna False.

Se o parâmetro foldername for na verdade um nome de arquivo existente, o método retorna False.

Sintaxe:

svc.FolderExists(foldername: str): bool

Parâmetros:

foldername: String representando a pasta a ser testada.

Exemplo:

Em Basic

      FSO.FileNaming = "SYS"
      If FSO.FolderExists("C:\Documents\Thesis") Then
          '...
      End If
    
Em Python

      fs.FileNaming = "SYS"
      if fs.FolderExists(r"C:\Documents\Thesis")
          # ...
    

GetBaseName

Retorna o BaseName (igual ao último componente) de uma pasta ou nome de arquivo, seu sua extensão.

O método não verifica se a pasta ou arquivo especificado existe.

Sintaxe:

svc.GetBaseName(filename: str): str

Parâmetros:

filename: String representando o nome do arquivo e seu caminho.

Exemplo:

Nos exemplos abaixo, a primeira chamada do método GetBaseName corresponde a uma pasta, então a função retorna o último componente do caminho. A segunda chamada recebe um nome de arquivo como entrada, então o nome do arquivo é retornado sem sua extensão.

Em Basic

      MsgBox FSO.GetBaseName("/home/user/Documents") ' "Documents"
      MsgBox FSO.GetBaseName("/home/user/Documents/my_file.ods") ' "my_file"
    
Em Python

      bas = CreateScriptService("Basic")
      bas.MsgBox(fs.GetBaseName("/home/user/Documents")) # "Documents"
      bas.MsgBox(fs.GetBaseName("/home/user/Documents/my_file.ods")) # "my_file"
    

GetExtension

Retorna a extensão de um nome de arquivo ou pasta sem o caractere "." ponto.

O método não verifica a existência da pasta ou arquivo especificado.

Se o método for aplicado a uma pasta ou arquivo que não possui extensão, então uma String vazia é retornada.

Sintaxe:

svc.GetExtension(filename: str): str

Parâmetros:

filename: String representando o nome do arquivo e seu caminho.

Exemplo:


      ' Basic
      ext = FSO.GetExtension("C:\Windows\Notepad.exe")  ' "exe"
    

      # Python
      ext = fs.GetExtension(r"C:\Windows\Notepad.exe")  # "exe"
    

GetFileLen

A função interna Basic FileLen retorna o número de bytes contidos em um arquivo como um valor do tipo Long, ou seja, com até 2GB.

O método GetFileLen consegue manipular arquivos com tamanhos maiores pois retorna um valor do tipo Currency.

Sintaxe:

svc.GetFileLen(filename: str): num

Parâmetros:

filename: String representando um arquivo existente.

Exemplo:

Em Basic

      Dim fLen As Currency
      FSO.FileNaming = "SYS"
      fLen = FSO.GetFileLen("C:\pagefile.sys")
    
Em Python

      fs.FileNaming = "SYS"
      fLen = fs.GetFileLen(r"C:\pagefile.sys")
    

GetFileModified

Retorna a última data de modificação de um dado arquivo.

Sintaxe:

svc.GetFileModified(filename: str): datetime

Parâmetros:

filename: String representando um arquivo existente.

Exemplo:

Em Basic

      Dim aDate As Date
      FSO.FileNaming = "SYS"
      aDate = FSO.GetFileModified("C:\Documents\my_file.odt")
    
Em Python

      fs.FileNaming = "SYS"
      aDate = FSO.GetFileModified(r"C:\Documents\my_file.odt")
    

GetName

Retorna o último componente de um arquivo ou pasta usando o formato nativo do sistema operacional em uso.

O método não verifica se a pasta ou arquivo especificado existe.

Sintaxe:

svc.GetName(filename: str): str

Parâmetros:

filename: String representando o nome do arquivo e seu caminho.

Exemplo:


      ' Basic
      a = FSO.GetName("C:\Windows\Notepad.exe")  ' Notepad.exe
    

      # Python
      a = fs.GetName(r"C:\Windows\Notepad.exe")  # Notepad.exe
    

GetParentFolderName

Retorna uma String contendo o nome da pasta pai de um dado nome de arquivo ou pasta.

O método não verifica se a pasta ou arquivo especificado existe.

Sintaxe:

svc.GetParentFolderName(filename: str): str

Parâmetros:

filename: String com o nome do arquivo ou pasta a ser analisado.

Exemplo:


      ' Basic
      a = FSO.GetParentFolderName("C:\Windows\Notepad.exe")  ' C:\Windows\
    

      # Python
      a = fs.GetParentFolderName(r"C:\Windows\Notepad.exe")  # C:\Windows\
    

GetTempName

Retorna um nome de arquivo temporário gerado aleatoriamente que pode ser útil para executar operações que requerem arquivos temporários.

Por padrão, o nome do arquivo retornado não possui extensão. Use o parâmetro extension para especificar a extensão do nome do arquivo a ser gerado.

A parte da pasta da string retornada é a pasta temporária do sistema.

O método não cria o arquivo temporário.

Sintaxe:

svc.GetTempName(extension: str): str

Parâmetros:

extension: A extensão do nome do arquivo temporário (Padrão = "").

Exemplo:

Em Basic

      Dim fName As String
      FSO.FileNaming = "SYS"
      fName = FSO.GetTempName(Extension := "txt")
      ' "/tmp/SF_574068.txt"
    
Em Python

      fs.FileNaming = "SYS"
      fName = FSO.GetTempName(extension = "txt")
      # "/tmp/SF_574068.txt"
    

HashFile

Funções hash são usadas por alguns algoritmos criptográficos, em assinaturas digitais, códigos de autenticação de mensagens, detecção de fraudes, impressões digitais, verificação de integridade de mensagens, tabelas hash, armazenamento de senhas e muito mais.

O método HashFile retorna o resultado da função hash aplicada em um dado arquivo usando o algoritmo escolhido. O valor retornado é uma String com caracteres hexadecimais minúsculos.

Os algoritmos hash suportados são: MD5, SHA1, SHA224, SHA256, SHA384 e SHA512.

Sintaxe:

svc.HashFile(filename: str, algorithm: str): str

Parâmetros:

filename: String representando um arquivo existente.

algorithm: Um dos algoritmos suportados.

Exemplo:


      ' Basic
      sHash = FSO.HashFile("C:\pagefile.sys", "MD5")
    

      # Python
      sHash = FSO.HashFile(r"C:\pagefile.sys", "MD5")
    

MoveFile

Move um ou mais arquivos de uma localização para outra. Retorna True se pelo menos um arquivo foi movido, ou retorna False se um erro ocorreu.

Um erro também ocorrerá se o parâmetro source usar caracteres curinga e não corresponder a arquivo algum.

O método é interrompido imediatamente se encontrar um erro. O método não é capaz de voltar atrás ou desfazer mudanças feitas antes da ocorrência do erro.

Sintaxe:

svc.MoveFile(source: str, destination: str): bool

Parâmetros:

source: Pode ser um nome de arquivo (FileName) ou um padrão de nomes (NamePattern) indicando um ou mais arquivos a serem movidos.

destination: Se source for um nome de arquivo (FileName) então este parâmetro indica o novo caminho e nome do arquivo que foi movido.

Se a operação de movimentação envolver múltiplos arquivos, então o parâmetro destination deve ser um nome de pasta. Se a pasta não existir, ela será criada.

Se source e destination possuírem a mesma pasta pai, o método renomeará source.

Caracteres curinga não são permitidos no parâmetro destination.

Exemplo:

Nos exemplos a seguir apenas arquivos são movidos. Subpastas não são movidas.


      ' Basic
      FSO.MoveFile("C:\Temp1\*.*", "C:\Temp2")
    

      # Python
      fs.MoveFile(r"C:\Temp1\*.*", r"C:\Temp2")
    

MoveFolder

Move uma ou mais pastas de uma localização para outra. Retorna True se pelo menos uma pasta foi movida, ou retorna False se um erro ocorreu.

Um erro também ocorrerá se o parâmetro source usar caracteres curinga e não corresponder a pasta alguma.

O método é interrompido imediatamente se encontrar um erro. O método não é capaz de voltar atrás ou desfazer mudanças feitas antes da ocorrência do erro.

Sintaxe:

svc.MoveFolder(source: str, destination: str): bool

Parâmetros:

source: Pode ser um nome de pasta (FolderName) ou um padrão de nomes (NamePattern) indicando uma ou mais pastas a serem movidas.

destination: Se a operação de movimentação envolver uma pasta única, então o parâmetro destination será considerado como o nome e caminho da pasta movida, portanto não deve existir.

Se múltiplas pastas estão sendo movidas, então destination define para onde as pastas em source serão movidas. Se a pasta destination não existir, ela será criada.

Caracteres curinga não são permitidos no parâmetro destination.

Exemplo:


      ' Basic
      FSO.MoveFolder("C:\Temp1\*", "C:\Temp2")
    

      # Python
      fs.MoveFolder(r"C:\Temp1\*", r"C:\Temp2")
    

Normalize

Retorna uma string contendo o nome do caminho normalizado, recolhendo separadores redundantes e referências de nível superior.

Por exemplo, os nomes de caminho A//B, A/B/, A/./B e A/foo/ ../B são todos normalizados para A/B.

No Windows, as barras "/" são convertidas em barras invertidas "\".

note

O valor atual da propriedade SF_FileSystem.FileNaming é usado para determinar a notação do argumento filename, bem como o formato da string retornada.


Sintaxe:

svc.Normalize(filename: str): str

Parâmetros:

filename: uma string que representa um nome de caminho válido. O arquivo ou diretório representado por este argumento pode não existir.

Exemplo:

Em Basic

    FSO.FileNaming = "URL"
    ' file:///home/user/Documents
    normPath = FSO.Normalize("file:///home/user/Documents/")
    ' file:///home/user/Documents
    normPath = FSO.Normalize("file:///home//user//Documents/")
    ' file:///home/user
    normPath = FSO.Normalize("file:///home//user//Documents/../")
  
Em Python

    fs.FileNaming = "URL"
    normPath = fs.Normalize("file:///home/user/Documents/")
    normPath = fs.Normalize("file:///home//user//Documents/")
    normPath = fs.Normalize("file:///home//user//Documents/../")
  

OpenTextFile

Abre um arquivo e retorna um objeto TextStream que pode ser usado para ler, escrever ou acrescentar valores a um arquivo de texto.

Note que o método não verifica se um dado arquivo é realmente um arquivo texto.

Este método retorna um objeto Null (em Basic) ou None (em Python) se algum erro ocorreu.

Sintaxe:

svc.OpenTextFile(filename: str, iomode: int = 1, create: bool = False, encoding: str = 'UTF-8'): svc

Parâmetros:

filename: Especifica o arquivo a ser aberto.

iomode: Indica o modo de entrada e saída. Pode ser uma de três constantes: svc.ForReading (padrão), svc.ForWriting, ou svc.ForAppending.

create: Valor booleano que indica se um novo arquivo pode ser criado se o nome de arquivo especificado em filename não existir:

encoding: Codificação de caracteres a ser usada. A codificação padrão é "UTF-8".

Exemplo:

Em Basic

      Dim myFile As Object
      FSO.FileNaming = "SYS"
      Set myFile = FSO.OpenTextFile("C:\Temp\ThisFile.txt", FSO.ForReading)
      If Not IsNull(myFile) Then
          ' ...
      End If
    
Em Python

      fs.FileNaming = "SYS"
      myFile = fs.OpenTextFile(r"C:\Temp\ThisFile.txt", fs.ForReading)
      if myFile is not None:
          # ...
    

PickFile

Mostra uma caixa de diálogo para abrir ou salvar arquivos.

Se o modo SAVE estiver definido e o arquivo escolhido existir, um alerta será apresentado.

Sintaxe:

svc.PickFile(defaultfile: str ='', mode: str = 'OPEN', filter: str = ''): str

Parâmetros:

defaultfile: Este argumento é uma String composta por um nome de pasta e arquivo:

mode: Uma string contendo o valor "OPEN" (para arquivos de entrada) ou "SAVE" (para arquivos de saída). O valor padrão é "OPEN".

filter: Usado para definir a extensão dos arquivos mostrados quando o diálogo é aberto (Padrão = sem filtro).

Exemplo:

Os exemplos abaixo abrem o selecionador de arquivos com o filtro "txt" aplicado.


      ' Basic
      aFile = FSO.PickFile("C:\Documents", "OPEN", "txt")
    

      # Python
      aFile = fs.PickFile(r"C:\Documents", "OPEN", "txt")
    

PickFolder

Abre uma caixa de diálogo para escolher uma pasta

Sintaxe:

svc.PickFolder(defaultfolder: str = '', freetext: str = ''): str

Parâmetros:

defaultfolder: String contendo o nome da pasta que será apresentada quando a caixa de diálogo for aberta (Padrão = última pasta selecionada).

freetext: Texto a ser mostrado na caixa de diálogo (Padrão = "").

Exemplo:


      ' Basic
      aFolder = FSO.PickFolder("C:\Documents", "Escolha uma pasta ou pressiona Cancelar")
    

      # Python
      aFolder = fs.PickFolder(r"C:\Documents", "Escolha uma pasta ou pressione Cancelar")
    

SubFolders

Retorna um array de strings indexado em zero com os nomes das pastas armazenadas em um dado foldername.

A lista pode ser filtrada usando caracteres curinga.

Sintaxe:

svc.SubFolders(foldername: str, filter: str = '', includesubfolders: bool = False): str[0..*]

Parâmetros:

foldername: String representando uma pasta. A pasta deve existir. foldername não pode designar um arquivo.

filter: String contendo caracteres curinga ("?" e "*") que serão aplicados à lista de pastas resultante (Padrão = "").

includesubfolders: Defina este argumento como True para incluir o conteúdo das subpastas (Padrão = False).

Exemplo:

Em Basic

      Dim folderList As Variant, folder As String
      FSO.FileNaming = "SYS"
      folderList = FSO.SubFolders("/home/user/")
      For Each folder In folderList
          ' ...
      Next folder
    
Em Python

      fs.FileNaming = "SYS"
      folderList = fs.SubFolders("/home/user/")
      for folder in folderList:
          # ...
    
warning

Todas as rotinas ou identificadores do ScriptForge em Basic que possuem o caractere "_" como prefixo são reservadas para uso interno. Elas não devem ser usadas em macros escritas em Basic ou em Python.


♥ Doe para nosso projeto! ♥