我们有为我们建立的第三方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();
答案 0 :(得分:1)
您需要执行的文件是“CMD.exe”,您要运行的批处理文件是您的参数: -
System.Diagnostics.Process.Start("cmd", "/c C:\\BatchTest\\batch.bat");