Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

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

Posted on 2008-10-22
4
Medium Priority
?
268 Views
Last Modified: 2013-11-10
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

0
Comment
Question by:gvilla23
  • 2
4 Comments
 

Author Comment

by:gvilla23
ID: 22781785
For example the user would type this at the command line -
C:\Test\application.exe D:\somefolder\somexmlfile.xml
0
 
LVL 3

Expert Comment

by:TechSinger
ID: 22782087
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
 
LVL 86

Accepted Solution

by:
Mike Tomlinson earned 500 total points
ID: 22782187
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
 

Author Closing Comment

by:gvilla23
ID: 31508993
Thanks.
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this post we will learn different types of Android Layout and some basics of an Android App.
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
Starting up a Project
Loops Section Overview

971 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question