【问题标题】:Running Saxon from a batch file: how do I capture errors?从批处理文件运行 Saxon:如何捕获错误?
【发布时间】:2017-11-23 13:58:30
【问题描述】:

我有一个批处理文件,它调用 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 的想法本身并没有错。这似乎是撒克逊人特有的。

【问题讨论】:

  • 试试这个,看看它是否会打开一个包含内容的日志。start /wait "" "C:\Program Files\Saxonica\SaxonHE9.6N\bin\Transform.exe" -s:"file.xml" -xsl:fixerrors.xslt -o:"output.xml" >fixerrors.log 2>&1 & type fixerrors.log & pause 它还应该保持窗口打开,以便您查看错误。
  • 另外,你不需要使用start,你可以单独调用路径和可执行文件。

标签: batch-file saxon


【解决方案1】:

尝试了@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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-06
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-18
    • 1970-01-01
    • 2011-10-29
    相关资源
    最近更新 更多