0

我们有一个为我们构建的第 3 方 exe。它读取 word 文档并将它们转换为 XML,以便我们可以处理它们。

我们有一个单击时运行良好的批处理文件。它只是遍历我们 doc 文件夹中的所有文档并将参数传递给 WordExtract.exe:

for %%a in (MyPATH\*.doc) do WordExtract.exe -InputFile="%%a" -TempFile0="%%a.html" -OutputFile= "%%a.xml"

但是,当我们尝试在 C# 代码中调用它时,它会为我们提供 WordExtract.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();
4

1 回答 1

1

您需要执行的文件是“CMD.exe”,您要运行的批处理文件是您的参数:-

System.Diagnostics.Process.Start("cmd", "/c C:\\BatchTest\\batch.bat");
于 2013-03-27T13:50:32.807 回答