batch-file - 如何在 .bat 文件中识别 %s?

标签 batch-file escaping forfiles

我有一个包含 3 个命令的 .bat 文件,它作为 3 个单独的命令(一次在命令行中输入 1 个)运行良好,但是当我将它们作为 3 行放在一个 bat 文件中时不起作用。

这是文件:

mogrify -format pgm ephemeral:*.png
pause
CALL forfiles /M *.pgm /C "cmd /c for %s in (@fname) do DebayerGPU.exe -demosaic DFPD_R -CPU -pattern GRBG -i %s.pgm -o %s.ppm
pause
mogrify -format png ephemeral:*.ppm

第一个命令运行正常,但命令行给我第二个命令的错误:

s.pgm was unexpected at this time

我用 fname 和 %s 进行 for 循环的原因是因为 debayer.exe 程序不将 @fname.pgm 理解为文件名,但它确实意识到这意味着引入一个字符串,所以它这样做了,然后 forfiles 识别@fname 并将其替换为当前文件名。

关于如何解决这个问题有什么想法吗?

我试过:

  1. %% 代替 %

  2. 在每个 %

    前放置一个 ^
  3. 添加上面代码中的CALL

  4. 在每行的末尾添加分号。

最佳答案

首先删除 CALL 它在这里没用,它会第二次开始解析,所以它会删除百分号。

并且将百分号加倍,因为它们将减半一次。

forfiles /M *.pgm /C "cmd /c for %%s in (@fname) do DebayerGPU.exe -demosaic DFPD_R -CPU -pattern GRBG -i %%s.pgm -o %%s.ppm

关于batch-file - 如何在 .bat 文件中识别 %s?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18536649/

相关文章:

batch-file - 为什么CALL命令不能执行括号内的命令?

html - GWAN unescape_html()

batch-file - 使用 cPDF 生成横向文件的批处理脚本?

for-loop - 如何使用forfiles命令批量使用多个命令?

windows - 如何在窗口 bat 中获取整个 svn 提交消息?

Windows:没有主目录的用户

windows - 如何在使用 TASKKILL/f/t/im explorer.exe 时保持批处理文件运行?

java - 使用 [href] 转义 html anchor 标记

Ruby 1.9.3 向 URI.escape 添加不安全字符