在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();

在c#中通过批处理文件运行exe时,但在手动单击批处理时不会出现Null异常

你需要执行的文件是"CMD.exe",你想运行的批处理文件是你的参数:-

System.Diagnostics.Process.Start("cmd", "/c C:''BatchTest''batch.bat");