2013-08-30 39 views
3

我有一個3個命令的.bat文件,可以像3個單獨的命令一樣正常運行(每次輸入1個命令行),但是當我將它們作爲3行放在bat文件中時不起作用。如何讓%s在.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並用當前文件名替換它。

關於如何解決這個問題的任何想法?

我曾嘗試:

  1. 把%%代替%
  2. 推杆的每個%
  3. 一個^盈加入CALL即在上面的代碼
  4. 添加分號結束的每一行。

謝謝!

回答

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 
+0

工作正常!非常感謝! – Acoustic77

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 
+0

對不起,但這不起作用:/ – Acoustic77

+0

你想描述它是如何失敗? – foxidrive