【问题标题】:Not printing anything after for loop in a batch script在批处理脚本中循环后不打印任何内容
【发布时间】:2017-10-27 10:30:43
【问题描述】:

下面是我的批处理脚本,它在 for 循环结束后没有执行该行。它不是 print echo end 或之后的行。 asciidoctor-pdf C:\Users\abc\Conversion_to_PDF\OutputFiles\*.adoc 行导致了它。但我不确定是什么问题。

@echo off

echo # Starting job

java -jar C:\Users\abc\Conversion_to_PDF\swagger2markup-cli-1.3.1.jar convert -i C:\Users\abc\Conversion_to_PDF\HIP-ProviderManagement-1.0.0-swagger.json -d C:\Users\abc\Conversion_to_PDF\OutputFiles

chdir /d C:\Users\abc\Conversion_to_PDF\OutputFiles

for %%A in (*.adoc) do (
asciidoctor-pdf C:\Users\abc\Conversion_to_PDF\OutputFiles\*.adoc
echo %%A
)
echo # end
C:\Users\abc\Downloads\sejda-console-3.2.3\bin\sejda-console merge -f C:\Users\abc\Conversion_to_PDF\OutputFiles\*.pdf -o C:\Users\abc\Conversion_to_PDF\OutputFiles\merged.pdf

【问题讨论】:

  • 评论 @echo off 并重新运行批处理文件,然后查看您在控制台上看到的错误。您可能想在问题中将它们发布在这里。
  • 我这样做了,但控制台上没有出现错误。它只是执行到 for 循环结束,就是这样。
  • 我想 asciidoctor-pdf 哪个 Windows 命令解释器在当前目录或环境变量 PATH 中列出的任何目录中找到并且具有在环境变量 PATHEXT 中列出的文件扩展名具有文件扩展名 @ 987654327@或.cmd,即执行文件为批处理文件。在这种情况下,您需要命令 CALL 从批处理文件中调用批处理文件。在 cmd 提示窗口中运行 call /? 寻求帮助。提示:使您的编码工作更轻松,并始终指定从批处理文件中执行或调用的文件,其中还包括文件扩展名。
  • 顺便说一句:你运行一个 FOR 循环来为每个 *.adoc 文件做一些事情,但是传递给 asciidoctor-pdf 一个带有通配符模式的文件夹路径,而不是当前带有完整路径的 *.adoc 文件名。这没有多大意义。所以很可能 FOR 循环应该是 for %%A in (*.adoc) do call asciidoctor-pdf.bat "%%~fA"for %%A in (*.adoc) do asciidoctor-pdf.exe "%%~fA" 取决于 asciidoctor-pdf 的真正含义。
  • 这是一个 bat 文件,我在批处理脚本中添加了 .bat 扩展名,但它仍然是一样的。我也试过“%%~fA”但没有任何变化。添加更多建议?我没主意了!如何将其更改为 while 循环?

标签: java batch-file asciidoctor-pdf


【解决方案1】:

你需要

call asciidoctor-pdf ....

因为asciidoctor-pdf 是一个批处理文件。 call 的意思是“执行这个,然后返回到下一条语句”。如果没有调用,则意味着“转到此批处理文件”,并且被告知要返回到原始文件(“调用者”)

【讨论】:

    猜你喜欢
    • 2014-06-24
    • 2023-04-02
    • 2011-02-05
    • 2022-10-23
    • 2015-11-01
    • 1970-01-01
    • 2011-06-07
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多