2

我有一个解决方案,可以读取文件名的命令行并读取其内容。我才意识到如果我能去就好了

c:\MyReader.exe < text.txt

代替

c:\MyReader.exe text.txt

如果文件的内容作为args输入放置在Main(String[] args). 它是可行的还是我必须解析文件?

4

2 回答 2

3

这不会将内容放入args中,而是将其重定向到标准输入,以便Console.Read方法从文件而不是键盘读取。

于 2012-08-06T15:26:54.733 回答
1

正如您无疑发现的那样,重定向是行不通的。做你想要达到的目标的能力取决于你的 shell 解释器的能力。您几乎可以肯定地编写一个执行您想要的批处理文件,但您也可以将其作为您自己程序的功能,而不是依赖批处理文件。

public static Main(String[] args) {
    if (args.Length >= 2 && args[0] == "/args") {
        args = File.ReadAllText(args[1]).Split(' ');
    }
    ...
}

如果你的程序是这样启动的:

c:\MyReader.exe /args text.txt

论据将取自text.txt;如果你的程序是这样启动的:

c:\MyReader.exe param1 param2 param3

那么参数将是命令行上传递的任何内容。

于 2012-08-06T15:31:46.570 回答