First of all, don't use "CMD.EXE". It can work, but makes no sense at all, pure redundant thing. Please use
System.Diagnostics.Process.Start("CapOne.bat");
This along won't make your code working. There can be some other problem. Why do you think that this file is found? It would be found if the calling code has the same working directory as the one where the batch file is located. But you can never guarantee that, as the user can start your application with any working directory, any at all. Did you know that? (Not only a programmer, but every user should understand it.) Instead, you could use your executable directory for a batch file.
In the past, I provided two answers comprehensively explaining how to get different paths to be used in an application:
How to find my programs directory (
executable directory),
How to find my programs directory (
current directory, "special folders").
And of course, you need to make sure the batch file itself is working properly.
Finally, the use if the batch file may be the indication of non-programming approach, but the approach of a non-programming user. It looks quite questionable. Why using a batch file? Is it because you don't know how to solve some problem programmatically, so you decided to use available applications? You made them doing the job, and don't want to change anything? How stable would be your result? Maintainable?
—SA