【问题标题】:Executing a java jar file in a bat file for loop在循环的bat文件中执行java jar文件
【发布时间】:2015-04-21 10:57:59
【问题描述】:

我需要根据来自文件的输入在 for 循环中的 bat 文件中运行 java jar 文件,文件中的每一行都包含一个参数:

SET jar-path="C:\\tools\\myJar.jar"
SET out-path=C:\tmp\out
SET args-file=C:\data\args.txt

for /f "usebackq" %%a in ("%args-file%") do (
    java -jar %jar-path% %%a %out-path%
    :: start /wait java -jar %jar-path% %%a %out-path%
)

args.txt 包含的地方:

a
b
c

但循环只是迭代 3 次而不运行 jar 文件。如果我在循环之外进行操作,有什么建议吗?

【问题讨论】:

  • 这是您的 bat 文件的全部内容还是只是一个 sn-p?
  • 是的,它的全部内容
  • 是否有可能jar正在执行但什么都不做?
  • 没有每次执行需要 10-15 秒,当我运行上面的 bat 文件时,它会在 1 秒后终止,但它会进行 3 次迭代
  • 如果你改用start /wait java -jar %jar-path% %%a %out-path% 行呢? 1 秒后仍然终止?

标签: windows batch-file


【解决方案1】:

如何使用以下批处理代码:

set "jar-path=C:\tools\myJar.jar"
set "out-path=C:\tmp\out"
set "args-file=C:\data\args.txt"

for /F "usebackq delims=" %%a in ("%args-file%") do (
    "java.exe" -jar "%jar-path%" %%a "%out-path%"
)

在将字符串分配给环境变量时使用双引号会产生巨大的差异,请参阅例如Assign string values with space to environment variables right 以获得解释。

如果可能的话,最好用完整路径指定java.exe,因为批处理文件总是在同一台计算机上使用。在批处理文件中,应避免命令行解释器必须使用环境变量 PATHEXTPATH 来找出要运行的应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多