[Índice Acima]

Ficheiros

Operações básicas: criar, copiar, apagar

As operações sobre ficheiros são métodos (formas de fazer coisas com) do objecto FileSystemObject.

Nesta listagem, tem algumas das principais operações sobre ficheiros. Coloque o script numa pasta vazia e observe a progressão dos ficheiros à medida que o script executa.

Note que, para operar sobre ficheiros, tem de abrir um canal de comunicação (instanciar um objecto) apropriado primeiro.

' filetests.vbs - 2008-05-13 18:43
' Operações com ficheiros

dim CanalFicheiro
NomeOriginal="ficheiro.txt"

' Abrir canal
set CanalFicheiro = createobject("scripting.filesystemobject")

' 1. Criar
CanalFicheiro.createtextfile NomeOriginal, true
' true força a criação do ficheiro mesmo que já exista
' o existente é apagado

msgbox "Paragem 1: ficheiro.txt criado",vbInformation

' 2. Renomear através de um "move"
CanalFicheiro.movefile NomeOriginal, "NovoFicheiro.txt"
' O move falha se o ficheiro destino já existe

msgbox "Paragem 2: Ficheiro movido para NovoFicheiro",vbInformation

' 3. Copiar
CanalFicheiro.copyfile "NovoFicheiro.txt", "NovoFicheiro2.txt"

msgbox "Paragem 3: NovoFicheiro copiado p/ NovoFicheiro2",vbInformation

' 4. Apagar
CanalFicheiro.deletefile "NovoFicheiro.txt"

msgbox "Paragem 4: NovoFicheiro apagado",vbInformation

CanalFicheiro.deletefile "NovoFicheiro2.txt"

msgbox "Fim: NovoFicheiro2 apagado",vbInformation

' 5. Fechar canal
set CanalFicheiro= Nothing

msgbox "Script concluído",vbInformation

' fim 

Nunca se esqueça de fechar os canais de leitura/escrita antes de sair do script, senão o sistema vai continuar a considerá-los abertos, o que traz inconvenientes.

Para mais informação sobre o objecto FileSystemObject, veja o manual de referência: Scripting Runtime Library, FileSystemObject.

Exemplos

Não lhe vai ser difícil encontrar aplicações. Entretanto, vamos ver, também, como iniciar, a partir dum script, um programa sobre um ficheiro, por dois métodos, estes pertencentes ao objecto shell. Ambos os programas abaixo testam a existência de um ficehiro de texto e abrem-no no notepad; um não espera pelo fecho do notepad, o outro espera.

' fileshow.vbs 2008-05-13 13:55
' Remexer em ficheiros
' Testar a existência de um ficheiro
' Abri-lo no notepad
' Como exemplo de um comando sobre um ficheiro
' dado ao sistema, usando o método exec
' Referência:
' Exec Method (Windows Script Host) 
' http://msdn.microsoft.com/en-us/library/ateytk4a(VS.85).aspx

dim CanalFicheiro, Ficheiro, CanalComando, Programa

' Criar o objecto ficheiro do sistema de ficheiros
' CanalFicheiro tradicionalmente é fso, aqui foi mudado
' para demonstrar ser um nome determinado pelo utilizador

' Abrir os canais
set CanalFicheiro= createobject("scripting.filesystemobject")

' CanalComando, tradicionalmente, é WshShell, mas isso não é necessário
set CanalComando= createobject("wscript.shell")

' Obter do utilizador o nome do ficheiro
Ficheiro= inputbox ("Ficheiro que quer ver: ")

' Testar e mostrar o que se encontra
if CanalFicheiro.fileexists(Ficheiro) then
	' Executar o comando
	set Programa= CanalComando.exec("notepad " & Ficheiro)
else
	msgbox Ficheiro & " não existe"
end if

' Fechar canais
set CanalFicheiro= Nothing
set CanalComando= Nothing

' FIM
' fileshow1.vbs 2008-05-13 14:40
' Remexer em ficheiros
' Testar a existência de um ficheiro
' Abri-lo no notepad
' Como exemplo de um comando sobre um ficheiro
' dado ao sistema, usando o método run
' Referência :
' http://msdn.microsoft.com/en-us/library/d5fk67ky(VS.85).aspx
' Título: Run Method (Windows Script Host)


' 1. Declarações e inicializações -------------------------

dim CanalFicheiro, Ficheiro, CanalComando, _
	ResultadoDoComando, EsperarPeloFim, vbCancel

EsperarPeloFim= true    ' true: esperar pelo fim da execução do comando
			' para continuar a execução do script, senão false

' Abrir os canais
' CanalFicheiro tradicionalmente é fso, aqui foi mudado
' para demonstrar ser um nome determinado pelo utilizador
set CanalFicheiro= createobject("scripting.filesystemobject")

' CanalComando, tradicionalmente, é WshShell, mas isso não é necessário
set CanalComando= createobject("wscript.shell")


' 2. Diálogo inicial --------------------------------------

' Obter do utilizador o nome do ficheiro
Ficheiro= inputbox ("Ficheiro que quer ver: ")
if Ficheiro=vbCancel then 
	' Cancelar: fechar canais abertos e sair
	set CanalFicheiro= Nothing
	set CanalComando= Nothing
	wscript.quit
end if

' 3. Execução ---------------------------------------------

' Testar e mostrar o que se encontra
if CanalFicheiro.fileexists(Ficheiro) then
	' Executar o comando
	ResultadoDoComando= CanalComando.run ("notepad " _
		& Ficheiro,4,EsperarPeloFim)
		' Janela tipo 4: "Displays a window in its most recent 
		' size and position. The active window remains active."
		else
	msgbox Ficheiro & " não existe"
end if

' 4. Fechar canais antes de sair --------------------------

set CanalFicheiro= Nothing
set CanalComando= Nothing

' 5. Diálogo final ----------------------------------------

' Mensagem final com código de saída de execução do comando
' se houver (se > 0)
if ResultadoDoComando > 0 then 
		msgbox "Fim do script, erro " _
		& ResultadoDoComando,vbInformation,"fileshow1.vbs"
else
		msgbox "Fim do script - sem erros "
end if

' FIM -----------------------------------------------------

Note que se criou uma variável para guardar qualquer código de erro que tenha ocorrido. Se um erro ocorresse, poderia nunca se saber.

Exercícios

Escreva um script que testa a existência do ficheiro c:\autoexec.bat, e outro que testa a de c:\windows\winhlp32.exe.

Escreva um script que copia todos os ficheiros de uma pasta para uma outra pasta de backup à sua escolha.

Escreva um script que abra o WordPad (que também se pode chamar write.exe, terá de procurar) ou o Notepad com um ficheiro cujo nome seja a data de hoje e extensão .rtf ou .txt respectivamente, e que o abra numa pasta dentro de Os Meus Documentos que tenha para esse efeito. A data de hoje é dada por uma string originada pela instrução date.

 

Índice | Comente


Início: 2008-05-13 20:35

Última modificação: 2008-05-13 20:35