How to check for command-line argument that specifies the location of a file

I need to take in a command-line argument that specifies the location of a file. This is for a desktop application, there is no interface, it being run completely by the command-line. I am not sure if I am on the right path.
Module Sample
    Sub main(ByVal args() As String)
        Dim dataCon As String = args(0)
        Console.WriteLine("Your input was: {0}", dataCon)
        Console.Write("Press Enter to close the program")
        Console.Read()
    End Sub
End Module

Open in new window

gvilla23Asked:
Who is Participating?
 
Mike TomlinsonConnect With a Mentor Middle School Assistant TeacherCommented:
Use a regular WINFORMS application and get the command line parameters from the Startup() Event:
http://msdn.microsoft.com/en-us/library/t4zch4d2(VS.80).aspx

It will properly return a filename as ONE string, even if it has spaces in it...as long as it is surrounded by quotes:

    C:\Test\application.exe "D:\some folder\with spaces\somexmlfile.xml"

You can keep the default Form from showing at all by setting the Cancel parameter to True.

To get these events...
Click on Project --> Propertes.
On the Application Tab, make sure the "Enable Application Framework" box is Checked.
In the Bottom Right, click on the "View Application Events" Button.
Across the top...
Change the Left DropDown to "(MyApplication Events)".
Change the Right DropDown to "Startup".

So your code might look like:
Namespace My
 
    ' The following events are availble for MyApplication:
    ' 
    ' Startup: Raised when the application starts, before the startup form is created.
    ' Shutdown: Raised after all application forms are closed.  This event is not raised if the application terminates abnormally.
    ' UnhandledException: Raised if the application encounters an unhandled exception.
    ' StartupNextInstance: Raised when launching a single-instance application and the application is already active. 
    ' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
    Partial Friend Class MyApplication
 
        Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupEventArgs) Handles Me.Startup
            If e.CommandLine.Count > 0 Then
                Dim fileName As String = e.CommandLine(0)
            
                ' do something with "fileName"...
 
                MessageBox.Show(fileName)
            End If
 
            e.Cancel = True ' Shut app down WITHOUT ever showing a Form...
        End Sub
 
    End Class
 
End Namespace

Open in new window

0
 
gvilla23Author Commented:
For example the user would type this at the command line -
C:\Test\application.exe D:\somefolder\somexmlfile.xml
0
 
TechSingerCommented:
That code looks fine.  It will only show you the first parameter that is given in the command line, however.
You can use the Environment.CommandLine command to capture the whole command line, which includes the path and filename of the executable that is run.
Once you parse the executable off, you have the raw data that is sent to the executable and not as parameters.  This would allow you to put spaces into the filename without needing quotes.  I have changed the code to reflect this and posted it with this comment.

Module Sample
    Dim filename As String
    Sub main(ByVal args() As String)
        Dim dataCon As String = Environment.CommandLine
        If dataCon.Substring(0, 1) = """" Then
            dataCon = dataCon.Substring(dataCon.IndexOf(""" ") + 2)
        Else
            dataCon = dataCon.Substring(dataCon.IndexOf(" ") + 1)
        End If
        Console.WriteLine("Your input was: {0}", dataCon)
        Console.Write("Press Enter to close the program")
        Console.Read()
    End Sub
End Module

Open in new window

0
 
gvilla23Author Commented:
Thanks.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.