このコードは、以下のバッチファイル(Windows)にあります。各.jpg
ファイルのパスのリストをディレクトリに返します。その後、そのリストをImageMagick Convert関数(Windows変換ではない)に渡してpdfを作成します。FORループで使用すると、FORFILESは再帰的になりません。
echo moving CMD to drive location at %~dp1
CD /d %~dp1
echo getting the list of file names
FORFILES /p %~dp1 /s /m "*.jpg" /C "cmd /c echo @path" > files.txt
echo creating the pdf using ImageMagick
convert @files.txt test.pdf
これがjpg画像データや他の単一のファイルタイプを返すために正常に動作します。複数の画像ファイルタイプを検索する必要があり、FORFILES
をFOR
ループに入れることができるthisサンプルソリューションがあります。
for %%G in (.jpg , .tif) do FORFILES /p %~dp1 /s /m "*.jpg" /C "cmd /c echo @path" > files.txt
しかし、私が行うと、プログラムはもはや再帰的ではありません。 forfiles
の/s
は機能しなくなりました。
私はFOR /R
を試しましたが、フォルダ名にはできるだけスペースが必要です。
これを再帰的に保持する方法や、スペースを含むフォルダ名に問題はありませんか?
'for/r'はファイル名全体を表示しますので、変数を引用符で囲むか' for/F 'を使用してくださいusebackqトークン= * "%a in('%a ') –