我有一个3个命令.bat文件,可以像3个单独的命令一样运行(每次input1个命令行),但是当我把它们作为一个bat文件中的3行时不起作用。
这里的文件:
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在这个时候是意外的
我之所以用fname和%s来循环,是因为debayer.exe程序不能理解@ fname.pgm作为文件名,但是它确实意识到%s意味着引入一个string,所以它是这样做的,然后forfiles认可@fname并用当前文件名replace它。
关于如何解决这个问题的任何想法?
我努力了:
谢谢!
首先删除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
你也不需要文件。 直接循环将工作。
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