C#通过命令行传递文件

时间:2014-09-11 08:29:24

标签: c# command-line-arguments

我的程序应该读取文件并计算其中的元音和辅音数量。因此,fileName必须作为命令行参数传递。这是我的代码的一部分:

class FileDetails 
{
    static void Main(string[] args) 
    {

        Console.WriteLine(args.Length); 
        foreach (string arg in args)
        { 
            Console.WriteLine(arg); 
        }
    }
}

编译完这个文件后,我通过命令行运行它并将一些参数传递给Main函数:

C:\Users\StepN\Desktop\FILEDETAILS>filedetails abc def xyz

程序的结果如下:

3
abc
def
xyz

因此,问题的根源是我需要将命令行参数作为文件名传递,但我不知道,该怎么做。

提前感谢您的帮助!

4 个答案:

答案 0 :(得分:0)

class Program
{
    static void Main(string[] args)
    {
    if (args.Length == 0){
        Console.WriteLine("Please pass command line arguments.");
        return;
    }

    string fileName = args[0];

    }
}

答案 1 :(得分:0)

如果在一个命令行参数中使用空格,则用双引号将其括起来。这就是你应该为你的可执行文件提供参数的方法:

C:\Users\StepN\Desktop\FILEDETAILS>filedetails.exe "C:\file name.txt"

在代码访问文件名中:

class FileDetails 
{
  static void Main(string[] args) 
  {
     if(args.Length > 0 )
     {
         string filePath = args[0];            

         //read the file using System.IO namespace
     }

   }
}

答案 2 :(得分:0)

唯一的问题是带有空格的文件名。如果您的文件名为abc def xyz,那么您应该用双引号括起来传递它:

C:\Users\StepN\Desktop\FILEDETAILS>filedetails "abc def xyz"

答案 3 :(得分:0)

有一种方法可以做。

1)打开记事本并编写代码并保存。

2)最重要的是:打开visual studio命令提示符并编译代码如下:     (i)设置保存程序的当前路径。     (ii)使用csc FileName.cs编译它

3)现在使用以下命令行参数执行程序: (a)FileName arg1 arg2

如果你不喜欢这样做,那么创建一个批处理文件并传递你的参数。然后运行你的.bat文件,它将触发你的C#程序。我的意思是这可能会触发bin文件夹中的.exe。