3

3 つの個別のコマンド (コマンド ラインに一度に 1 つ入力) として正常に動作する 3 コマンドの .bat ファイルがありますが、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

最初のコマンドは正常に実行されますが、コマンド ラインで 2 番目のコマンドに対して次のエラーが表示されます。

s.pgm was unexpected at this time

fname と %s を使用した for ループがある理由は、debayer.exe プログラムが @fname.pgm をファイル名として認識しないためですが、それが文字列を取り込むことを意味することを認識するためです。 @fname を認識し、現在のファイル名に置き換えます。

この問題を解決する方法についてのアイデアはありますか?

私が試してみました:

  1. %%代わりに置く%

  2. ^それぞれの前に置く%

  3. CALL上記のコードにあるを追加する

  4. 各行の終わりにセミコロンを追加します。

4

2 に答える 2

2

最初CALLにここでは役に立たないを削除すると、もう一度解析が開始されるため、パーセント記号が削除されます。

パーセント記号は 1 回で半分になるため、2 倍にします。

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 に答える