Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

bioshock

Pegar no FileName (?) [Resolvido]

Mensagens Recomendadas

bioshock

Utilizo o seguinte ciclo para procurar todos os ficheiros *.exe;

O problema está documentado no código.

Eu queria ir buscar o nome do .exe (género FileName), mas apenas o nome e não o Full Path.

                'Declaração das variáveis;
                Dim FicheiroEXE As ObjectModel.ReadOnlyCollection(Of String)
                Dim Ficheiro As String

                'Pega no ficheiro com extensão *.exe;
                FicheiroEXE = My.Computer.FileSystem.GetFiles(Application.StartupPath, FileIO.SearchOption.SearchTopLevelOnly, "*.exe")

                'Faz uma procura no directório;
                For Each Ficheiro In FicheiroEXE
                    'Caso o nome do ficheiro seja diferente de UPDATE, então:
                    If Ficheiro <> "Update.exe" Then

                        ' Aqui diria que a Label1.Text = Ficheiro.Name ' 

                    End If
                Next

Obrigado!  ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
fLaSh_PT

IO.Path.GetFileName("path")
' Ou
IO.Path.GetFileNameWithoutExtension("path")

Compr.


Making the impossible possible and pwing the world on db at a time.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Olá fLaSh_PT,

A tua linha de código funcionou perfeitamente, mas afinal o código não funciona como eu quero, senão repara:

'Declaração das variáveis;
                Dim FicheiroEXE As ObjectModel.ReadOnlyCollection(Of String)
                Dim Ficheiro As String

                'Pega no ficheiro com extensão *.exe;
                FicheiroEXE = My.Computer.FileSystem.GetFiles(Application.StartupPath, FileIO.SearchOption.SearchTopLevelOnly, "*.exe")

                'Faz uma procura no directório;
                For Each Ficheiro In FicheiroEXE
                    'Caso o nome do ficheiro seja diferente de Update & Update.vshost.exe, então:
                    If (Ficheiro <> "Update.exe") And (Ficheiro <> "Update.vshost.exe") Then

                        TextBox1.Text = IO.Path.GetFileName(Ficheiro)

                    End If
                Next

O objectivo era ele ir buscar o nome do ficheiro que não fosse nem Update.exe nem Update.vshost.exe

E ele vai-me sempre buscar o ficheiro: Update.vshost.exe.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Não estás a controlar casing nem a fazer trimming.

Basta que venha uma letra capitalizada num sitio diferente para avaliar verdadeiro.

        If (LCase(ficheiro).Trim <> "update.exe") And (LCase(ficheiro).Trim <> "update.vshost.exe") Then
            MsgBox(ficheiro)
        End If

Em último caso coloca breakpoints e analisa os valores nas variáveis com uns quantos quick watches.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Em parte funcionou ribeiro, mas não na totalidade.

Se eu fizer com o

MsgBox(ficheiro)

ele lista-me todos os ficheiros com .exe na pasta.

Se eu fizer:

     
If (LCase(Ficheiro).Trim <> "update.exe") And (LCase(Ficheiro).Trim <>  "update.vshost.exe") Then
Label6.Text = IO.Path.GetFileName(Ficheiro)
End If

Ele vai na mesma buscar apenas update.vshost.exe

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Heis parte do código para fazer o que pretendo:


Dim FicheiroEXE As ObjectModel.ReadOnlyCollection(Of String)
Dim Ficheiro As String

'Pega no ficheiro com extensão *.exe;
        FicheiroEXE = My.Computer.FileSystem.GetFiles(Application.StartupPath, FileIO.SearchOption.SearchTopLevelOnly, "*.exe")

        'Faz uma procura no directório;
        For Each Ficheiro In FicheiroEXE
            'Caso o nome do ficheiro seja diferente de update & Update.vshost, então:
            If (LCase(Ficheiro).Trim <> "Update.exe") Then
                Label6.Text = Path.GetFileName(Ficheiro)
            End If
        Next
        'Verificamos se a versão actual é a mais actualizada;
        If ftp.GetFilename(i) <> Label6.Text Then
            MsgBox("Faz o update")
        Else
            MsgBox("Já existe")
        End Iff

Apenas basta lá ter o Update.Exe porque no SETUP, depois de instalada a aplicação não fica mais nenhum *.exe para além do Update.exe e da Aplicação.exe.

O problema é que ele não está a encontrar a Aplicação.exe, vai sempre buscar o Update.exe.

Partilhar esta mensagem


Ligação 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

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.