C#通过命令行传递文件

问题描述:

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

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

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

这个文件的编译后,我通过命令行运行它,并传递一些参数的主要功能:

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

PROGRAMM的结果看起来是这样的:

3 
abc 
def 
xyz 

所以,问题的根源在于我需要传递一个命令行参数的文件名,但我不知道该怎么做。

在此先感谢您的帮助!

+5

因此,您的所有参数都已成功传递。问题是什么? – 2014-09-11 08:30:37

+0

尝试使用System.IO.File.ReadAllLines(args [0]) – 2014-09-11 08:31:08

+0

代码没有问题。它是*工作*根据您编码的方式。现在,你需要做的就是用这种方式调用程序,“filedetails.exe myfile.txt”。您可以在代码中获取文件名(args [0])并打开文件并读取内容并执行您的工作。这是你的编程任务吗? :-) (开玩笑) – Thangadurai 2014-09-11 08:37:33

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

    string fileName = args[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 
    } 

    } 
} 

你可以有唯一的问题是有空格的文件名。如果您的文件名abc def xyz,那么你应该通过它双引号括起来:

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

有办法做到。

1)打开记事本并编写代码并保存。 2)最重要的是:打开visual studio命令提示符并编译代码如下: (i)设置当前路径,您的程序保存在哪里。 (ii)与CSC FileName.cs编译

3)现在,执行程序中使用以下命令行参数: (一)文件名ARG1 ARG2

如果你不舒服这样做,然后创建一个批处理文件并通过编写你的论点。然后运行你的.bat文件,它会触发你的C#程序。我的意思是这可能会触发bin文件夹中的.exe文件。