パスワードを忘れた? アカウント作成
436117 journal

dsegの日記: すごいぞ、CMD.EXEのForコマンド 5

日記 by dseg

MLに、「foo.pdfというファイルを、foo.swfにコンバートしたい。
あるディレクトリの階層下にある全てのPDFをコンバートしたい。
ファイルは100個以上あるんだけど、どうしたらいいか?」
(※使用しているOSは当初は書いていなかったが、2000かXPだったようだ)

…という質問が来たので、昼休みにちょっと考えていた。
そういえば昔書いたWSHのスクリプトがあったよな~、
と思って見てみたら100行位ある。
うーん…。

あるPDFをSWFに変換するには、"pdf2swf"を使って、
> pdf2swf foo.pdf -o foo.swf
とすればよい。

pdf2swfはシェルグロプを処理してくれないので、
> pdf2swf *.pdf
としてもエラーになってしまうから、
100個のPDFをSWFにするには、100回先ほどのコマンドを発行しなければならない。

結局そのWSHスクリプトをMLにポストしたが、
模範解答は、なんとたったの一行だったようだ。
(正解はコメントにて…)

悲しいなあ。悲しいなったら悲しいな~あ。はあっ。
これ、*nixのfindコマンドだと、どう書けるんだろう、とちょっと試したが、失敗した。はああぁぁ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • コマンドプロンプトを開き、
    ; cd c:\pdf
    FOR /R %I in (*.pdf) DO @pdf2swf %~fI -o %~dpI%~nI.swf
    とする。
    • %~fIが、完全修飾パス
    • %~dpIが、ドライブ文字とパス
    • %~nIが拡張子を除いたファイル名

    • に展開され、
      結果これでディレクトリ以下の全てのPDFがコンバートされる。
      コマンド名やオプションを入れ替えれば、変換系のタスクには汎用的に使えそうだ。
      # オプションは豊富にそろっている

      FORコマンドの詳細は、コマンドプロンプトを開いて
      > FOR /?
      とするとすごい量のヘルプが出てくる。
      しかし、FORコマンドはすごいな。
typodupeerror

犯人はmoriwaka -- Anonymous Coward

読み込み中...