【发布时间】:2013-11-07 19:19:27
【问题描述】:
我正在为客户创建一个小型命令行工具并尝试验证其输出。输出被写入命令行本身。由于它是一个相当大的文件,被用作输入文件,因此写入命令行的输出很大,我希望输出重定向到一个文件。 通常我使用这样的命令行参数将输出重定向到文件:
a.exe ./input.txt > ./ouput.txt
但是,在我的程序中,我尝试验证输入:
static void Main(string[] args)
{
if (args.Length != 1)
throw new ArgumentException();
...
args 现在是:
args[0] = ./input.txt
args[1] = >
args[2] = ./ouput.txt
老实说,我个人仍然只期望一个参数,因为文件已创建,因此 shell 确实理解我的意思。所以......我做错了什么?我应该使用args 还是别的什么?
提前谢谢!
【问题讨论】:
-
猜猜你将不得不更改验证码。
-
尝试加括号,像这样:(a.exe ./input.txt) > ./ouput.txt
-
对我来说,它按预期工作。你也可以试试
a.exe ./input.txt>./ouput.txt(不带空格)吗? -
args.Length应该是 1 如您所愿。你是如何调用你的工具的?你是在 shell 中输入命令行吗? -
Dan-o:我考虑过使用外部库 (stackoverflow.com/questions/491595/…),但对于这么简单的事情,我只是不想打扰。在我的情况下,它也不会让任何事情变得更简单。 Alexandre:在 VS2012 中不能这样做,可以吗? AlexFilipovici:如果我不在我的文件名周围使用任何引号,那将会起作用 ;-) 无论如何,谢谢!
标签: c# visual-studio-2012 command-line-arguments