如何避免重定向输出符号“>”被当作命令行参数(可能是快捷方式)

How to avoid the redirect output sign">"being taken as command line arguments(in a shortcut maybe)

我无法通过调用 Windows 上的快捷方式将标准输出重定向到文件。

直接运行"exe.exe 1 2 1 4 5 6 7 >> log.txt",日志文件生成成功

我假设在使用shortcut.lnk时将“>>”符号作为参数,因此它不会生成log.txt

如何正确启动命令或修改程序来实现我想要的?

这是我的代码:

static void Main(string[] args)
        {
            string acc = "";
            string pass = "";
            string EmailEnabled = "";
            string smtpServer = "";
            string sender = "";
            string smtpAuth = "";
            string receiver = "";
            if (args.Length == 7)
            {
                acc = args[0];
                pass = args[1];
                EmailEnabled = args[2];
                smtpServer = args[3];
                sender = args[4];
                smtpAuth = args[5];
                receiver = args[6];
            }
            else if (args[2] == "0")
            {
                acc = args[0];
                pass = args[1];
                EmailEnabled = args[2];
            }
            else
            {
                Console.WriteLine("command line arguments are wrong");
                return;
            }
}

截图:

in this way,the">"is taken as an argument

in another way,the">" funtions normal as redirect sign

我认为这个问题与 Windows 相关,而不是 C# 所以要重定向快捷方式

@Flydog57 的评论

cmd /c "file_shortcut.lnk" bla bla bla  >out.txt

即将推出 C#: 您可以制作第 8 个参数输出文件并重定向标准输出 按照此: console.setout
可能是这样的:

   using (var writer = args.Length>7? new StreamWriter(args[7]) : new StreamWriter(Console.OpenStandardOutput()))
        { 
                Console.SetOut(writer); 
               //all codes inside
        }