Avatar billede freelancegrafiker Nybegynder
05. januar 2008 - 20:34 Der er 13 kommentarer og
1 løsning

Læse eget filnavn

Hey.. Jeg her du mindre program som skal kopiere sig selv til en anden destination, uanset hvad den hedder.. Jeg bruges p.t. "file.copy(curdir()+"\navn.exe", "destination")"..... Men det holder jo ikke hvis den hedder andet end navn.exe ... Hvordan kan det ellers gøres?
Avatar billede freelancegrafiker Nybegynder
05. januar 2008 - 20:36 #1
Hov... Der skal stå "...jeg har et..."
Avatar billede nielle Nybegynder
05. januar 2008 - 20:41 #2
Du kan f.eks. bruge:

Assembly.GetExecutingAssembly().Location.ToString()

til at få exe-filens navn.
Avatar billede nielle Nybegynder
05. januar 2008 - 20:47 #3
Noget i denne stil:

Dim currFileName As String = Assembly.GetExecutingAssembly.Location

Dim fi As FileInfo = New FileInfo(currFileName)

Dim destDirectoryName As String = "C:\sti1\sti2"
Dim destFileName As String = Path.Combine(destDirectoryName, fi.Name)

fi.MoveTo(destFileName)
Avatar billede arne_v Ekspert
05. januar 2008 - 20:51 #4
Hvis det var en win forms app, så kunne man bruge Application.ExecutablePath (man kan også
bruge den hvis det ikke er en win forms app, men det vil se lidt "mystisk" ud).
Avatar billede freelancegrafiker Nybegynder
06. januar 2008 - 01:09 #5
Hmm.. Nielle.. den siger at assembly ikke er declared..

Men Application.ExecutablePath virker til formålet .. <3
Avatar billede arne_v Ekspert
06. januar 2008 - 01:45 #6
Imports System.Reflection

så burde Assembly være der !
Avatar billede freelancegrafiker Nybegynder
06. januar 2008 - 02:01 #7
Nu du lige er her arne..

Jeg vil også gerne tjekke, om der er forbindelse til en ftp, så
kunne du lige give et eksempel, på en FtpWebRequest.GetResponse ?

Ellers lægger i begge et svar.. Tak for hjælpen..
Avatar billede arne_v Ekspert
06. januar 2008 - 03:14 #8
Det eneste jeg har på lageret er:

Imports System
Imports System.IO
Imports System.Net

Namespace E
    Class MainClass
        Public Shared Sub Upload(ByVal localfile As String, ByVal ftpurl As String, ByVal bin As Boolean)
            Dim req As FtpWebRequest = DirectCast(WebRequest.Create(ftpurl), FtpWebRequest)
            req.Method = WebRequestMethods.Ftp.UploadFile
            req.UseBinary = bin
            If bin Then
                Dim instm As Stream = New FileStream(localfile, FileMode.Open, FileAccess.Read)
                Dim outstm As Stream = req.GetRequestStream()
                Dim b As Byte() = New Byte(10000) {}
                Dim n As Integer
                n = instm.Read(b, 0, b.Length)
                While n > 0
                    outstm.Write(b, 0, n)
                    n = instm.Read(b, 0, b.Length)
                End While
                instm.Close()
                outstm.Close()
            Else
                Dim sr As StreamReader = New StreamReader(localfile)
                Dim sw As StreamWriter = New StreamWriter(req.GetRequestStream())
                Dim line As String
                line = sr.ReadLine()
                While line IsNot Nothing
                    sw.WriteLine(line)
                    line = sr.ReadLine()
                End While
                sr.Close()
                sw.Close()
            End If
            Dim resp As FtpWebResponse = DirectCast(req.GetResponse(), FtpWebResponse)
            Console.WriteLine(resp.StatusCode)
        End Sub
        Public Shared Sub Main(ByVal args As String())
            Upload("C:\X.java", "ftp://anonymous:xxxxxx@arnepc3/X.java", False)
            Upload("C:\X.class", "ftp://anonymous:xxxxxx@arnepc3/X.class", True)
        End Sub
    End Class
End Namespace
Avatar billede freelancegrafiker Nybegynder
06. januar 2008 - 04:20 #9
Jamen, når den så rammer:

Dim outstm As Stream = req.GetRequestStream()

.. og IKKE kan få forbindelse, så stopper programmet og siger

"Unable to connect to the remote server"

Det er jo det jeg gerne vil ungå.. Så hvis den ikke kan få forbindelse, så skal den bare retry indtil den kan..
Avatar billede arne_v Ekspert
06. januar 2008 - 04:56 #10
Det skal du nok bruge Try Catch til:

done = False
While Not done
    Try
        ' do FTP stuff
        done = True
    Catch e As Exception
    End Try
End While

   
End While
Avatar billede arne_v Ekspert
06. januar 2008 - 04:57 #11
Og den anden end while skal naturligvis ikke være der.
Avatar billede arne_v Ekspert
06. januar 2008 - 04:57 #12
og et svar
Avatar billede nielle Nybegynder
06. januar 2008 - 08:14 #13
Hov?
Avatar billede arne_v Ekspert
06. januar 2008 - 16:36 #14
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester