私たちのために構築されたサードパーティの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 に対して null 参照例外が発生します。
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:
したがって、バッチファイルを正常に呼び出しています。バッチファイルを手動で実行するとエラーが発生しない理由がわかりませんが、プログラムで実行すると何らかの理由で null 例外が発生します。
コマンドプロンプトで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();