PEGAR A LETRA OU CAMINHO UNICO DE ARQUIVO
Ola caros amigos
Tenho um HD dividido em dois, com 2 sistemas operacionais.
Quando alterno entre os sistemas a letra tambem alterna e asim C: vai pra D:
Gostaria de saber como pego a letra(ou caminho) do HD onde esta o arquivo independente do sistema ativado.
Ou pegar o Volume(ID) de cada partição e trasformar em letra da unidade?.
Tenho um HD dividido em dois, com 2 sistemas operacionais.
Quando alterno entre os sistemas a letra tambem alterna e asim C: vai pra D:
Gostaria de saber como pego a letra(ou caminho) do HD onde esta o arquivo independente do sistema ativado.
Ou pegar o Volume(ID) de cada partição e trasformar em letra da unidade?.
Citação:
Encontrei uma maneira que é mais fácil do que imaginava
Ao invés de encontra um meio de pegar a letra através do serial
Resolvi gravar o serial e depois fazer uma simples comparação rodando as letras das unidades a procura do Serial gravado com o serial retornado
Para pegar a letra usei este código simples usando FileSystemObject
Dim fso As New FileSystemObject
Dim Winchester As Scripting.Drive
Set Winchester = fso.getdrive([Ô]c[Ô])
Serial = Hex$(Winchester.SerialNumber)
[ô]Lembrando que para usar FileSystemObject e necesario incluir uma biblioteca do VB
No painel Projeto - Referancias - ative a opçao MICROSOFT SRIPTING RUNTIME
A lista de musicas ficou assim:
SerialdaUnidade+Diretório+Musica
Deste modo não importa em qual sistema eu entre o Serial sempre vai ser o mesmo.
Depois usei o código abaixo para rodar todas as unidade e encontra a letra do Serial gravado no Dir de cada musica
Private Declare Function GetLogicalDriveStrings Lib [Ô]kernel32[Ô] Alias [Ô]GetLogicalDriveStringsA[Ô] _
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Function LetraUnidade(Serial As String) As String
Dim pos, ret As Integer
Dim Letra, TodosDrives As String
Dim fso As New FileSystemObject
Dim Winchester As Scripting.Drive
TodosDrives = Space(64)
ret = GetLogicalDriveStrings(Len(TodosDrives), TodosDrives)
TodosDrives = Left$(TodosDrives, ret)
Do
pos = InStr(TodosDrives, Chr(0))
If pos Then
Letra = Left(TodosDrives, pos - 1)
If Letra <> [Ô]A:\[Ô] And Letra <> [Ô]B:\[Ô] Then [ô]Ignora Disquetes
TodosDrives = Mid(TodosDrives, pos + 1, Len(TodosDrives))
Letra = Left(Letra, 1)
Set Winchester = fso.GetDrive(Letra)
If Serial = Hex$(Winchester.SerialNumber) Then LetraUnidade = Letra: Exit Function
End If
End If
Loop Until TodosDrives = [Ô][Ô]
End Function
Obrigado todos pela atenção.
A maior evolução se da onde não precisamos retornar a idade da pedra.!!!
Se você sabe o diretório então:
Wdir = DIR([Ô]C:\[Ô] & Wcaminho & [Ô]\[Ô] & Warquivo)
Em Wdir estará o nome do arquivo se existir. Se não existir, deve estar na outra unidade.
Wdir = DIR([Ô]C:\[Ô] & Wcaminho & [Ô]\[Ô] & Warquivo)
Em Wdir estará o nome do arquivo se existir. Se não existir, deve estar na outra unidade.
Não e bem o que procuro
Veja no caso de 3 partições C D E
Ativo o sistema em E, então onde iria o C
e tambem como saberia em outro PC com 3 ou 4 partições
com sistemas sabe la onde.
O que procuro e do tipo, Pegar o ID unico de cada partição
e em outro momento atraves deste ID de partição achar a letra da unidade.
Veja no caso de 3 partições C D E
Ativo o sistema em E, então onde iria o C
e tambem como saberia em outro PC com 3 ou 4 partições
com sistemas sabe la onde.
O que procuro e do tipo, Pegar o ID unico de cada partição
e em outro momento atraves deste ID de partição achar a letra da unidade.
ja tentou usar o volume do hd?
Então.... Faça um loop procurando a letra:
Wachei = 0
For Wx = 65 to 90
Wdir = DIR(asc(Wx) & [Ô]:\[Ô] & Wcaminho & [Ô]\[Ô] & Warquivo)
if Wdir = Warquivo then
Wachei = Wx
endif
next Wx
if Wachei = 0 then
Wtexto = [Ô]ARQUIVO NÃO ENCONTRADO[Ô]
else
Wtexto = [Ô]ARQUIVO ENCONTRADO NO DRIVE [Ô] & Wachei
endif
msgbox(Wtexto)
vTexto = Mid(App.Path, 1, 2) & Caminho & Arquivo
O codigo que procuro e pra dar suporte a uma PlayList
ou seja a lista pode ter varias musicas em diferentes partições
não da pra ficar procurando pela musica, tem que ter um modo direto de aceso tambem em outros sistemas.
ou seja a lista pode ter varias musicas em diferentes partições
não da pra ficar procurando pela musica, tem que ter um modo direto de aceso tambem em outros sistemas.
Citação:Como pegar o Volume(ID) de cada partição e trasformar em letra da unidade?
Citação:Como pegar o Volume(ID) de cada partição e trasformar em letra da unidade?
Colega não entendi direito sua duvida, deixa eu falar o que entendi, o sistema está instalado em uma partição, e quando vc alterna entre os sistemas operacionais, esta partição muda a letra.
veja bem app.path deveria resolver o problema
assim seja lá qual for a unidade o programa irá funcionar perfeitamente.
isso pelo que entendi, agora se deseja um programa para procurar a letra da unidade de um certo arquivo, é outra história.
veja bem app.path deveria resolver o problema
arquivo = App.Path & [Ô]\Pasta_do_arquivo\seu_arquivo.txt[Ô]
assim seja lá qual for a unidade o programa irá funcionar perfeitamente.
isso pelo que entendi, agora se deseja um programa para procurar a letra da unidade de um certo arquivo, é outra história.
Citação::
... agora se deseja um programa para procurar a letra da unidade de um certo arquivo, é outra história.
Foi o que eu entendi.
Cara, acho que o FileSystemObjects lhe dará suporte para fazer o que você quer.
Estou em um computador se VB, por isso não posso te dar um exemplo concreto,
mas pesquise na internet que você vai encontrar exemplos legais.
abraços
Estou em um computador se VB, por isso não posso te dar um exemplo concreto,
mas pesquise na internet que você vai encontrar exemplos legais.
abraços
Tópico encerrado , respostas não são mais permitidas