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

programadorvb6

Como apagar ficheiros e pastas com nome comprido. [ Resolvido ]

9 mensagens neste tópico

Olá boa tarde a todos.

Estou com um problema e não sei como resolvê-lo .

Passo a descrever:

Tenciono eliminar a directoria : EA Games Back  e suas sub pastas + ficheiros , só que não consigo , dá-me erro.

Será que alguém me pode ajudar ?

Deixo aqui o código.

Link .

http://www.box.net/shared/vxv20y3okg

Pretendo apagar tudo apartir desse directorio para a frente + o mesmo.

Directorio : C:\Documents and Settings\Morpheus\Os meus documentos\EA Games Back

Conto com a vossa ajuda.

obrigado desde já.

até +

programadorvb6

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olá,

Eu utilizo isto:

' *******************************************************
' Elimina todos os ficheiros e pastas a partir
' de uma localização indicada
' *******************************************************
Public Sub DelTree(strDir As String)
    Dim strCurrent As String
    Dim strFile()  As String
    Dim intI       As Integer
    
    strCurrent = Dir(strDir & "*.*", vbDirectory)
    ReDim strFile(0 To 0) As String
    
    Do Until Len(strCurrent) = 0
        Select Case strCurrent
        Case ".", ".."
            ' não faz nada
        Case Else
            If GetAttr(strDir & strCurrent) And vbDirectory Then
                ReDim Preserve strFile(0 To UBound(strFile) + 1) As String
                strFile(UBound(strFile)) = strDir & strCurrent & "\"
            Else
                If GetAttr(strDir & strCurrent) And vbReadOnly Then
                    SetAttr strDir & strCurrent, vbNormal
                End If
                Kill strDir & strCurrent
            End If
        End Select
        
        strCurrent = Dir()
    Loop
    
    For intI = 1 To UBound(strFile)
        DelTree strFile(intI)
    Next intI
    
    ' remove a directoria actual
    RmDir strDir
End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quero desde já agradecer a todos os que me tentaram ajudar..!!

De facto a rotina que apresentaste é tentadora... senão a melhor opção pensando bem, pois faço intenção de a utilizar no Win Vista.

Existe outro processo um pouco duvidoso a meu ver.... na medida de poder funcionar a 100% com o S.O Vista que é utilizando a Biblioteca : Scrrun.Dll

Passo a expor a rotina ( que + tarde me lembrei usar via Api..)

e que quero compartilhar tb com outros programadores.

1º Adicionar a biblioteca.

2º Código  para eliminar a pasta que se pretende:

Private Sub ApagarPasta_Click()

' Usa-se o FileSystemObject da biblioteca Scrrun.Dll para poder apagar pastas

    Dim MataDir As New FileSystemObject

   

    MataDir.DeleteFolder "C:\Documents and Settings\Morpheus\Os meus  documentos\EA Games Back"

    Set MataDir = Nothing

End Sub

e pronto é tudo.. apaga tudo ( ficheiros + pasta apartir do : EA Games Back para a frente incluindo a própria.

Contudo Ter-se-á  o risco pelo facto de utilizar esta biblioteca de não funcionar correctamente em S.O Vista.

+ 1 vez obrigado a todos.

Ps: Talvez use a tua rotina para não me dar problemas com os outros S.O.

até+

Valeu  :)

Programadorvb6

Ps : tive a tentar o teu código e não consegui apagar pastas com nomes grandes e separados.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Ps : tive a tentar o teu código e não consegui apagar pastas com nomes grandes e separados.

Vi este comentário por acaso. Se não colocares nenhuma nova entrada não recebo o email de notificação.

Mas passando ao que interessa em que sistema operativo ? É que já utilizei diversas vezes sem nenhum problema.

Não te estás a esquecer da barra final ?

Call DelTree("d:\MinhaPastaApagar\")

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

vou exprimentar só fiz deltree("d:\MinhaPastaApagar\")

e não o chamamento da rotina com call

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não necessitas de usar o Call (com ou sem ele é a mesma coisa)  o que me referi é se usaste:

deltree("d:\MinhaPastaApagar")

ou

deltree("d:\MinhaPastaApagar\")

É que comigo funciona na perfeição (windows XP e Windows Server 2003 )

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

usei com "\" no fim e deu-me erro porque não me conseguia apagar em 1º lugar ficheiros com nomes grandes e + espaços e por ultimo exprimentei tb apagar alguns ficheiros grandes deixando aqueles que tinham osnome pequeno (esses ele apagou) o resto ... ficou tudo na mesma.

a unica possibilidade e a + fiavel (que exprimentei em Dos) foi colocar o caractere "~" nos espaços ou seja c:\Os~meus~documentos\"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Provavelmente ou não estou a perceber bem ou está a falhar qualquer coisa.

Neste computador não tenho VB6 mas logo faço o upload de um exemplo.

PS: Não existiram por ai ficheiros protegidos ou em uso ?

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