SALVAR NO PENDRIVE

NETOCAZUZA 25/08/2012 00:36:02
#408625
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?
RACEMAN 25/08/2012 05:26:37
#408628
Resposta escolhida
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.
NETOCAZUZA 25/08/2012 14:23:56
#408639
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?
ALEVALE 25/08/2012 17:18:03
#408650
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
RACEMAN 25/08/2012 18:40:06
#408654
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...
RACEMAN 25/08/2012 18:49:23
#408655
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
Tópico encerrado , respostas não são mais permitidas