我们有一个为我们构建的第 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();