在c#中通过批处理文件运行exe时,但在手动单击批处理时不会出现Null异常
本文关键字:批处理 单击 异常 Null 批处理文件 exe 运行 | 更新日期: 2023-09-27 18:06:20
我们有一个为我们构建的第三方exe。它读取word文档并将其转换为XML,以便我们可以处理它们。
我们有一个批处理文件,当点击运行良好。它只是循环遍历doc文件夹中的所有文档并将参数传递给wordextrace .exe:
for %%a in (MyPATH'*.doc) do WordExtract.exe -InputFile="%%a" -TempFile0="%%a.html" -OutputFile= "%%a.xml"
当我们尝试在c#代码中调用它时,它会给我们一个null引用异常,用于wordextrace .exe
System.NullReferenceException was unhandled
Message=Object reference not set to an instance of an object.
Source=WordExtract
StackTrace:
at WordExtract.Converter.word2text(FileInfo file, FileInfo txtfile)
at WordExtract.Program.Main(String[] args)
InnerException:
它很好地调用了批处理文件。我只是不确定为什么批处理文件产生没有错误,当我手动运行它,但不知何故有一个空异常时,以编程方式运行。
当我试图在命令提示符中手动或编程地运行exe时,也有相同的结果。手动运行时工作正常,编程运行时给出上述错误。
对此有什么想法吗?运行批处理文件应该会产生相同的结果。它根本不需要任何输入,所以我不能通过编程把它搞砸。
下面是运行批处理文件的代码:Process proc = new Process();
string targetDir = string.Format(@"C:'BatchTest");//this is where batch.bat is
proc.StartInfo.WorkingDirectory = targetDir;
proc.StartInfo.FileName = "batch.bat";
proc.StartInfo.CreateNoWindow = false;
proc.Start();
proc.WaitForExit();
你需要执行的文件是"CMD.exe",你想运行的批处理文件是你的参数:-
System.Diagnostics.Process.Start("cmd", "/c C:''BatchTest''batch.bat");