Jump to content

Pegar no FileName (?) [Resolvido]


bioshock
 Share

Recommended Posts

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!  😉

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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"

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
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
 Share

×
×
  • Create New...

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.