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

blackice856

[Resolvido] Copiar ficheiros no VB.NET

Recommended Posts

blackice856

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.

Share this post


Link to post
Share on other sites
Weasel

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


Knowledge to the masses


Share this post


Link to post
Share on other sites
blackice856

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.

Share this post


Link to post
Share on other sites
jpaulino

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.

Share this post


Link to post
Share on other sites
anolsi

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


"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Share this post


Link to post
Share on other sites
Weasel

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


Knowledge to the masses


Share this post


Link to post
Share on other sites
blackice856

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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.