3

我有一个 3-command .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. 在每行末尾添加分号。

4

2 回答 2

2

首先删除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
于 2013-08-30T15:59:33.183 回答
1

你也不需要forfiles。直接的 for 循环将起作用。

mogrify -format pgm ephemeral:*.png
pause
for %%s in (*.pgm) do DebayerGPU.exe -demosaic DFPD_R -CPU -pattern GRBG -i "%%s" -o "%%~ns.ppm"
pause
mogrify -format png ephemeral:*.ppm
于 2013-08-31T01:36:56.820 回答