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

bioshock

Pegar no FileName (?) [Resolvido]

Recommended Posts

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!  ;)

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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"

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.