0

私たちのために構築されたサードパーティの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();
4

1 に答える 1

1

実行する必要があるファイルは「CMD.exe」であり、実行するバッチファイルは引数です:-

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