You will need to learn about a concept called "Inter-Process Communication", or IPC for short, and then learn about the specific details about how to use the IPC mechanisms that are present on Windows.
The most basic thing you could do is have the WinBatch script write status information to a file and have the .NET application poll a directory for changes and then read the status files as they are written.
A more sophisticated way would be to create a "named pipe" as a server in the .NET application and then have the WinBatch script open the same named pipe as a client. From that point, the two programs would then communicate a full-duplex bi-directional manner passing messages back & forth. It's entirely up to you to define the format & content of those messages. I'd strongly suggest something simple and text-based like JSON.
Alternatively, you could investigate how to use System.Windows.Automation in .NET and control the target application directly from the .NET application and eliminate the need for a separate WinBatch script. And, likewise, if WinBatch can perform the same functionality as the .NET application, then there is the possibility of eliminating the .NET application and doing everything from within a single WinBatch script. WinBatch has access to nearly all of the functionality of .NET via it's ability to utilize .NET's CLR [Common Language Runtime].