SALVAR NO PENDRIVE
Estou aprimorando um programinha de backup que baixei aqui mesmo no site e estou com a seguinte dúvida. Coloquei a rotina de salvar o backup num pen drive através de um bat que eu chamo no programa com a seguinte instrução:
xcopy /S /E [Ô]C:\COPIA\*.*[Ô] [Ô]F:\COPIA[Ô]
Simplesmente ele tá copiando a pasta cópia do C para o F, que é o pendrive no meu pc, correto? O que eu gostaria de saber é como fazer através do código, para descobrir onde o usuário tem o pendrive [Ô]espetado[Ô]? Pois isso logicamente irá variar de um PC para outro. Quero um código para testar e ver qual a unidade disponÃvel depois do C, e enviar o arquivo pra lá, tem como fazer isso?
xcopy /S /E [Ô]C:\COPIA\*.*[Ô] [Ô]F:\COPIA[Ô]
Simplesmente ele tá copiando a pasta cópia do C para o F, que é o pendrive no meu pc, correto? O que eu gostaria de saber é como fazer através do código, para descobrir onde o usuário tem o pendrive [Ô]espetado[Ô]? Pois isso logicamente irá variar de um PC para outro. Quero um código para testar e ver qual a unidade disponÃvel depois do C, e enviar o arquivo pra lá, tem como fazer isso?
Faça a referencia para: Microsoft Scripting Runtime
Adicione um ListBox com o Name: List1
Use esta função:
Private Sub DetectarPen()
Dim FSO As New Scripting.FileSystemObject, drv As Scripting.Drive
List1.Clear
For Each drv In FSO.Drives
If drv.IsReady Then
If drv.DriveType = Removable Then
List1.AddItem drv.DriveLetter & [Ô]:[Ô]
End If
End If
Next
Set FSO = Nothing
End Sub
Pronto! Agora, reconhece automático.
Adicione um ListBox com o Name: List1
Use esta função:
Private Sub DetectarPen()
Dim FSO As New Scripting.FileSystemObject, drv As Scripting.Drive
List1.Clear
For Each drv In FSO.Drives
If drv.IsReady Then
If drv.DriveType = Removable Then
List1.AddItem drv.DriveLetter & [Ô]:[Ô]
End If
End If
Next
Set FSO = Nothing
End Sub
Pronto! Agora, reconhece automático.
RACEMAN, testei aqui, e deu certo. Está mostrando a unidade no List1, porém, tentei colocar um else (para avisar quando não houver pendrive) e não consegui. Onde devo fazer esse teste? Tipo: SE List1 vazio, então (mensagem). Já tentei de várias formas e não to conseguindo pois mesmo com o pendrive no lugar fica abrindo a mensagem.
Uma outra dúvida é a seguinte, como usuário novato a gente sempre procura o caminho mais difÃcil. Como solução para atribuir a letra do pendrive na hora de salvar, pensei em fazer vários bats (cada um pra uma unidade). Não teria uma forma mais prática? Tipo pegar a letra lá do List1, e só acrescentar ela lá na linha onde aparece o [txt-color=#e80000]F[/txt-color]:/copia. Tem um jeito mais prático de fazer isso?
Uma outra dúvida é a seguinte, como usuário novato a gente sempre procura o caminho mais difÃcil. Como solução para atribuir a letra do pendrive na hora de salvar, pensei em fazer vários bats (cada um pra uma unidade). Não teria uma forma mais prática? Tipo pegar a letra lá do List1, e só acrescentar ela lá na linha onde aparece o [txt-color=#e80000]F[/txt-color]:/copia. Tem um jeito mais prático de fazer isso?
Mas lembrando que drv.DriveType = Removable Then pode identificar sendo um drive de disquete também caso exista ainda...rsrsrs
Então na sua rotina não esqueça de verificar se a letra é diferente da letra A: geralmente a letra dos disquetes
Então na sua rotina não esqueça de verificar se a letra é diferente da letra A: geralmente a letra dos disquetes
NETOCAZUZA, me desculpa a bronca, mas você esta errando na lógica.
Não costumo dar soluções, mas vou te ajudar....
Basta transformar essa rotina em function, retornando se existe ou não.
Obiviamente, você tem que ainda, que adaptar para suas necessidades.
Segue abaixo o anexo da possÃvel solução:
Espero que te ajuda e, você entenda melhor sobre lógica.
valeu , abraços...
Não costumo dar soluções, mas vou te ajudar....
Basta transformar essa rotina em function, retornando se existe ou não.
Obiviamente, você tem que ainda, que adaptar para suas necessidades.
Segue abaixo o anexo da possÃvel solução:
Espero que te ajuda e, você entenda melhor sobre lógica.
valeu , abraços...
Acrescentando algumas coisas:
Você pode melhorar ainda mais ai, como por exemplo; Na função DetectarPen() as boolean, não fazer ele limpar list1 toda hora que encontrar,
comparando se a que ele achou é igual a que já existe, se não for igual, você recarrega a lista ou apenas adiciona a nova letra.
Enfim, só fiz, uma solução rápida e fácil para você entender. valeu
Você pode melhorar ainda mais ai, como por exemplo; Na função DetectarPen() as boolean, não fazer ele limpar list1 toda hora que encontrar,
comparando se a que ele achou é igual a que já existe, se não for igual, você recarrega a lista ou apenas adiciona a nova letra.
Enfim, só fiz, uma solução rápida e fácil para você entender. valeu
Tópico encerrado , respostas não são mais permitidas