我有一个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此时出人意料
我有fname和%s循环的原因是因为debayer.exe程序不能将@ fname.pgm理解为文件名,但它确实意识到%s意味着引入一个字符串,所以它确实那个,然后forfiles识别@fname并用当前文件名替换它。
关于如何解决这个问题的任何想法?
我试过了:
谢谢!
答案 0 :(得分: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
答案 1 :(得分:1)
您也不需要forfiles。一个直接的循环将起作用。
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