从批处理文件运行Saxon:如何捕获错误?

时间:2017-11-23 13:58:31

标签: batch-file saxon

我有一个调用Saxon进行XSLT转换的批处理文件。对于某些文件,Saxon给了我一个错误。这将出现在一个新的命令行窗口中,该窗口打开约1秒钟,然后关闭。我试图在文件中捕获该错误消息。

这是批处理文件的相关部分:

start /wait "" "C:\Program Files\Saxonica\SaxonHE9.6N\bin\Transform.exe" -s:"file.xml" -xsl:fixerrors.xslt -o:"output.xml" 1>>fixerrors.log 2>&1

创建了fixerrors.log文件,但即使Saxon遇到错误并创建了新的命令行窗口,它仍保持为空。

我能够从这样的其他程序捕获错误消息,因此使用1>>fixerrors.log的想法本身并没有错。这似乎是撒克逊人特有的。

1 个答案:

答案 0 :(得分:0)

尝试了@Gerhard Barnard提出的两种方法:

start /wait "" "C:\Program Files\Saxonica\SaxonHE9.6N\bin\Transform.exe" -s:"%~n1 - original.xml" -xsl:fixerrors.xslt -o:"%~n1.xml" 1>>fixerrors.log 2>&1 & type fixerrors.log

不起作用,Saxon错误不会放在日志文件中。

"C:\Program Files\Saxonica\SaxonHE9.6N\bin\Transform.exe" -s:"%~n1 - original.xml" -xsl:fixerrors.xslt -o:"%~n1.xml" 1>>fixerrors.log 2>&1

确实有效,错误消息放在日志文件中(实际上,它们被放置了两次,因为我将标准错误和标准输出重定向到文件中)。