• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

blackice856

[Resolvido] Copiar ficheiros no VB.NET

7 mensagens neste tópico

Boas pessoal. Tou com um problema neste código. Não sei porquê ele não funciona:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim folderexist1, folderexist2, folder1, folder2 As String
        Dim appPathFilename As String
        Dim o As String = "\caca.exe"
        appPathFilename = System.Windows.Forms.Application.StartupPath()
        Dim c As String = appPathFilename + o
        folder2 = "c:\Documents and Settings\All Users\Menu Iniciar\Programas\Arranque" + o
        folder1 = "c:\Documents and Settings\All Users\Start Menu\Programs\Startup" + o
        folderexist1 = Dir(folder1, vbDirectory)
        folderexist2 = Dir(folder2, vbDirectory)
        If folderexist2 <> "" Then
            FileCopy(c, folder2)
        ElseIf folderexist1 <> "" Then
            FileCopy(c, folder1)
        End If

Desculpem o código ser tão "desarrumado" mas eu sou assim.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Realmente esse código está estranho...

Eu faria assim:

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim folder1, folder2 As String
        Dim fileCheck As String = "\teste.exe"
        Dim sourcePath As String = My.Application.Info.DirectoryPath & fileCheck
        folder1 = "c:\Documents and Settings\All Users\Start Menu\Programs\Startup" & fileCheck
        folder2 = "c:\Documents and Settings\All Users\Menu Iniciar\Programas\Arranque" & fileCheck

        If My.Computer.FileSystem.FileExists(folder1) = False Then
            Try
                My.Computer.FileSystem.CopyFile(sourcePath, folder1)
            Catch ex As Exception
                MsgBox("Ocorreu um erro ao tentar copiar o ficheiro" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "Erro")
            End Try
        ElseIf My.Computer.FileSystem.FileExists(folder2) = False Then
            Try
                My.Computer.FileSystem.CopyFile(sourcePath, folder2)
            Catch ex As Exception
                MsgBox("Ocorreu um erro ao tentar copiar o ficheiro" & vbCrLf & ex.Message, MsgBoxStyle.Critical, "Erro")
            End Try
        End If
    End Sub

End Class

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Realmente esse faz mais sentido, mas só tenho um problema. Esses "My".

Aparecem sublinhados e diz que "My" não está declarado.

Atenção que estou a usar VB.NET 2003.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Realmente esse faz mais sentido, mas só tenho um problema. Esses "My".

Aparecem sublinhados e diz que "My" não está declarado.

Atenção que estou a usar VB.NET 2003.

Só está disponível a partir do .NET Framework 2.0 (Visual Studio 2005).

Podes usar o IO.File.Copy() e IO.File.Exists() que é o mesmo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora porque não evoluir para o VB. Net 2005 ou mesmo 2008?

Concordo, não vejo porque motivo continuar no 2003 se já temos o 2008

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O motivo é que o meu 2003 é genuíno.

Mas vou tentar sacar o 2008 ou o 2005.

E obrigada pela dica jpaulino.

Resolvido...

Dim folder1, folder2 As String
        Dim fileCheck As String = "\teste.exe"
        Dim sourcePath As String = System.Windows.Forms.Application.StartupPath & fileCheck
        folder1 = "c:\Documents and Settings\All Users\Start Menu\Programs\Startup"
        folder2 = "C:\Documents and Settings\All Users\Menu Iniciar\Programas\Arranque"
        Dim x As String = folder2 & fileCheck
        If IO.File.Exists(folder2) = False Then
            IO.File.Copy(sourcePath, folder2 & fileCheck)
        ElseIf IO.File.Exists(folder1) = False Then
            IO.File.Copy(sourcePath, folder1 & fileCheck)
        End If

O erro estava que na verificação da pasta, estavamos a  verificar este destino ("c:\Documents and Settings\All Users\Start Menu\Programs\Startup" & filecheck), que é igual a "c:\Documents and Settings\All Users\Start Menu\Programs\Startup\teste.exe". Ora o coitado estava a verificar um ficheiro e não uma pasta, e nunca copiava porque o ficheiro não estava lá... Obrigada a todos os que me ajudaram a resolver este problema.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora