如何在C#控制台应用程序中使用命令行参数?

时间:2011-04-18 09:01:57

标签: c# console console-application

我正在编写一个url shortener应用程序,我还想创建一个带有C#的控制台应用程序,将URL推送到我也创建的WCF服务。

WCF应用会缩短此URI的网址;

http://example.com/shorten/http://exaple.com

所以我想要的只是那个。

我的控制台exe文件将位于c:\dev文件夹内,在Windows命令行中,我想这样做;

  

c:\ dev> myapp -throw http://example.com

通过这种方法,我想谈谈这项服务。谈话部分没有问题。但问题是我如何在命令行上提供此 -throw 的东西并获得响应并将该响应放在命令行上并提供一种方法将其复制到剪贴板。我在这里问得太多了吗? :S我不知道。

你可以指导一下我可以找到相关信息的地方吗?或者你可以给我一个示例代码吗?

感谢。

编辑: 我试过以下代码;

    class Program {

    static void Main(string[] args) {

        if (args[0] == "-throw") {

            System.Windows.Forms.Clipboard.SetDataObject(args[1]);
            Console.WriteLine(args[1] + " has been added to clipboard !");
            Console.ReadLine();

        }

    }
}

我收到以下错误;

  

C:\ APPS \ ArgsTry \ ArgsTry \ BIN \调试和GT; ArgsTry    - 小伙子

     

未处理的例外情况:   System.Threading.ThreadStateException:   当前线程必须设置为单个   OLE之前的线程单元(STA)模式   可以打电话。确保你的   主要功能有STAThreadAttribute   标记在上面。在   System.Windows.Forms.Clipboard.SetDataObject(对象   data,Boolean copy,在t32 retryTimes中,   Int32 retryDelay)at   System.Windows.Forms.Clipboard.SetDataObject(对象   数据)   ArgsTry.Program.Main(String [] args)in   C:\ APPS \ ArgsTry \ ArgsTry \的Program.cs:   第14行

     

C:\ APPS \ ArgsTry \ ArgsTry \ BIN \调试和GT;

2 个答案:

答案 0 :(得分:21)

将参数传递给控制台应用程序很简单:

using System;

public class CommandLine
{
   public static void Main(string[] args)
   {
       for(int i = 0; i < args.Length; i++)
       {
           if( args[i] == "-throw" )
           {
               // call http client args[i+1] for URL
           }
       }
   }
}

至于剪贴板,请参阅:

http://msdn.microsoft.com/en-us/library/system.windows.forms.clipboard.aspx

答案 1 :(得分:1)

请参阅下面的参数,您可以使用它来读取运行exe文件时传递的所有值。

static void Main(string[] args) {