【问题标题】:Windows batch breaks off after output redirect / BaseX输出重定向/BaseX 后 Windows 批处理中断
【发布时间】:2016-09-02 18:00:55
【问题描述】:

我正在使用 Windows 批处理文件来自动化 BaseX 数据库上的 XQuery 请求。语法如下:

..\bin\basex -c "commands1.txt" > ".\result\1.xml"
..\bin\basex -c "commands2.txt" > ".\result\2.xml"
..\bin\basex -c "commands3.txt" > ".\result\3.xml"

“commands1.txt”等文件包含实际的 BaseX 命令并且工作正常。有一个参数“-o”来指定输出文件,但这似乎不起作用。我发现捕获 XQuery 结果的唯一方法是在批处理文件中使用“>”进行输出重定向。

问题:批处理文件在第一行之后中断执行,即在写入 .\result\1.xml 之后。下一行“commands2.txt”和“commands3.txt”不会被调用(即使它们都存在并且在同一个文件夹中,并且如果批处理文件的第一行它们会被正确调用)。

我阅读了有关 Windows 批量输出重定向的所有信息,但无法给出任何解释。以下示例运行良好:

echo 'hello' > test.txt
echo 'hello1' > test1.txt

我非常感谢 BaseX 批处理文件(参见上面的第一个示例)不起作用的原因?

【问题讨论】:

  • ..\bin\basex.exe 还是..\bin\basex.bat
  • ..\bin\basex.bat -- (该目录中没有 .exe 或 .cmd 文件。)

标签: windows batch-file basex


【解决方案1】:

要调用 bat 文件,请使用 call batfile.bat。如果您只使用batfile.bat,则将控制权转移给它。没有回报。

call“调用”batfile 并返回。

【讨论】:

  • 哇!那很快。非常感谢! --- 我想知道为什么当我运行更正的文件时 cmd 中的输出没有进展。它只显示call ..\bin\basex.bat -c "test1_ne u.txt" 1>".\result\test1.xml",即使我的其他 xml 文件被正确写入,控制台也不会显示其他被执行的行。
  • 我认为,basex.bat@echo OFF 开头,并不关心将其设置回 ON。
  • 是的。非常感谢您的帮助!
  • Wikipedia en.wikibooks.org/wiki/Windows_Programming/Programming_CMD:“从 Windows XP 开始,ECHO ON 命令是可选的。命令解释器在 BAT 文件终止后自动启用它。” --- 显然不是。这里是 Windows7。
  • 您的辅助 BAT 文件与您的主文件在相同的上下文中运行。因此,当secondary.bat 将控制权返回给primary.bat 时,“批处理”不会终止。 (是的,不是很直观,但仔细想想还是有道理的)
猜你喜欢
  • 1970-01-01
  • 2010-09-12
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
相关资源
最近更新 更多