STDIN, STDOUT and STDERR plus the >> or > redirect capability are features of cmd.exe. Not features of the OS itself.
.NET has nothing specific to do with your issue. You’d get the exact same behavior whether you run a .NET-based exe file or a conventional Win32/Win64 exe file.
As such, when you’re sitting at a CMD window and type
C:\>Myapp.exe >>J:\blah\blah\Logfile.txt
The >Logfile.txt redirection is performed by CMD.exe. Your myapp.exe receives no arguments at all. Cmd.exe passed myapp.exe file handles for STDIN, STDOUT, and STDERR, and myapp.exe blindly writes its output to the handles provided. With no knowledge of where that goes.
Absent CMD.exe, when you launch myapp.exe directly as a subprocess of another app, the task scheduler, the Windows Run dialog box, etc., the OS provides dummy file handles for STDIN, STDOUT and STDERR that go nowhere. Any effort by the app to read STDIN returns EOF immediately, and any attempt to write to STDOUT or STDERR returns a success result code immediately without sending the data anywhere.
So that’s why you see the results you do. Here’s what to do about it:
As you’ve seen one workaround is to launch cmd.exe to have it perform the redirection and in turn launch your exe.
Embedding the call to myapp.exe in a .bat or .cmd file amounts to the same thing. The OS knows .bat & .cmd files require cmd.exe to interpret them. So it starts CMD.exe and passes a ref to the .bat or .cmd file to CMD.exe. CMD.exe then reads the .bat or .cmd file and interprets each line. Including the line that specifies some redirection along with running myapp.exe.
The other alternative is to design your app(s) to parse and follow additional parameters to specify where to log to and whether to append or overwrite. e.g.
C:\>myapp.exe param1 param2 param3 /Logfile:J:\blah\blah\Logfile.txt /Appendmode:Y
But that means your app must have code to parse these arguments, create or open those files, etc. Ideally you’d design all your .exes to use the same parameter syntax so you’re not creating a maintenance nightmare for the people who create the scripts and tasks.