時,我們有一個是爲我們建立了一個第三方的exe。它讀取文檔並將它們轉換爲XML,以便我們處理它們。空異常運行時,在C#中通過批處理文件exe文件,但不能點擊批量手動
我們有點擊時運行正常的批處理文件。它只是遍歷在我們的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();
批處理文件是否帶有任何命令行參數? – 2013-03-27 13:17:37
我會帶着S#Schultz講述'c#',但'string.format'語句中的'@'做了什麼? – Magoo 2013-03-27 13:29:06
@PeterWright,'@'表示字符串可以包含\而不必轉義它。 – 2013-03-27 14:39:30