• ベストアンサー

CGIでファイルをコピーすることは?

a.gifというファイルに、状態によってb.gifの内容をコピーしたり、c.gifの内容をコピーしたりしたいのですが、リファレンス本などをみるとそのようなコマンドはないようでした。 このようなことは実現できるでしょうか? なにか良い方法をご存知の方、ぜひ教えてください。

  • CGI
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • kokucho81
  • ベストアンサー率61% (157/255)
回答No.1

TSkasiwaさま、はじめまして。 >a.gifというファイルに、状態によってb.gifの内容をコピーしたり、 >c.gifの内容>をコピーしたりしたいのですが、リファレンス本などを >みるとそのようなコマンド>はないようでした。 >このようなことは実現できるでしょうか? ご質問の件ですが、ファイルをコピーする場合は、File::Copy を使うのが最も良いと思います。 ####################################################### use File::Copy 'copy'; copy ("ABC.gif", "DEF.gif"); # ABC.gif を DEF.gifへとコピーする ####################################################### このように、Perlでは、MS-DOSのコピーコマンドに近い感覚で、 ファイルをコピーすることが出来ます。 又、現在のディレクトリ(を含めた下の階層)の一覧は、File::Find関数を 以下のように使用することで得ることができます。 ####################################################### use File::Find 'find'; find (\&wanted, "./"); sub wanted { print "$File::Find::name\n"; # 現在のディレクトリ以下[サブディレクトリ含む]の全てのファイルを表示する } ####################################################### File::Find(\&wanted, dir1, [dir2 ...]) 関数 の詳細な使い方につきましては、 ネットや書籍などで、お調べになってみてください。 いろいろな便利なオプションがございます。 又、perlの一般的な関数である、readdir関数を使用しても ほぼ同様の効果が得られますので、こちらも良いと思います。 最後に、簡単な正規表現や判定文などを加えると次のようなサンプルができます。 ####################################################### use File::Copy 'copy'; use File::Find 'find'; find (\&wanted, "./"); sub wanted { if (/.+\.gif$/) { $File::Find::name =~ s|^./||; copy ($File::Find::name, "E:\\$File::Find::name"); # 現在のディレクトリの *.gif ファイルをE:\フォルダにコピーする } } ####################################################### いかがでしょうか? ご参考になれば。 何か、ご不明な点などありましたら、ご遠慮なく補足してください。

TSkasiwa
質問者

お礼

ありがとうございます。 これがやりたかったのです。 File::Find(\&wanted, dir1, [dir2 ...]) 関数 を調べてこれからどんな風につかえるか、というのを勉強しようと思います。 本当にありがとうございました。

関連するQ&A

  • VBAでファイルをコピー

    Aというフォルダの配下に、B,Cというフォルダがあります。 Bには、b1ファイルとb2ファイルがあり、 Cには、c1ファイルがあります。 Aフォルダにa1ファイルをおき、a1ファイル内にある ボタンを押すと、Bフォルダのb1ファイルとb2ファイル Cフォルダのc1ファイルをすべてAフォルダ直下にコピーする ようにするにはどうすればいいでしょうか? dosコマンドで実行するようにはできるかと思いますが vbaでやる方法を教えて下さい。

  • windowsでファイルコピーのプロセスを確認できるか

    Windows 2003 serverが以下の3台存在します。 サーバA サーバB サーバC サーバAからサーバB上でリモートでコマンドを実行し、サーバB上のファイルをサーバCにコピーするジョブを組んでいます。 コピーするファイルは10GBで、サーバBからサーバCまで約2時間かかります。 サーバAでコマンドを実行したということは確認できるのですが、サーバBとサーバC間でコピーされている最中に、本当にコピーが実行されているのかどうかが確認できず、困っています。 サーバAからリモートでコマンドを実行しているために、サーバB上でもサーバC上でもファイルがコピーされるアニメーションは現われません。サーバC上のファイルコピー先でも、ファイルが表示されないか、ファイルの最大サイズがはじめから表示されてしまい、更新を押してもファイルサイズが変動しないためコピーされているかわかりません。 コピーを表すプロセスが確認できればよいのですが、コピーのプロセスとはどのプロセスなのでしょうか? もしどなたかご存知でしたら教えていただきたく思います。

  • バッチファイルで指定拡張子以外のファイルをコピーする方法

    OK Waveページ内を検索してみましたが、同じような質問をされている方がいないようでしたので、新規で質問させていただこうと思います。 ある特定のフォルダに入っているファイルを、指定した拡張子以外のファイルのみコピーしるバッチファイルを作成したいのですが、よい方法がみつかりません。 コマンドの操作方法をいろいろ調べてはみたのですが、 指定拡張子以外をコピーするようなコマンドがないようです。 例えば、c:\TEST_Aに、a.xls, b.doc, c.txtとファイルがあって、拡張子が"txt"以外のファイルをすべてc:\TEST_Bフォルダにコピーを取りたい場合、どのようにバッチファイルを組めばよいでしょうか。 以上、宜しく御願い致します。

  • 1つのファイルを複数のディレクトリにコピーする

    ディレクトリAの中に ディレクトリ B ディレクトリ C ディレクトリ D ディレクトリ E ファイル F があるとします.ここでファイルFをB,C,D,Eにコピーするにはどうコマンドを打てばよいのでしょうか?

  • コマンドプロンプトで条件付きファイルコピー

    コマンドプロンプトでファイルコピーをしたいのですが条件があります。 前回ファイルコピーした後でファイル更新されたものだけにしたいのです。 例:前回ファイルコピーした日時 2009/10/19 10:20:30   Aファイルの更新日時 2009/10/19 11:00:00   Bファイルの更新日時 2009/10/19 9:40:00   Cファイルの更新日時 2009/10/20 13:00:00 このとき、A,Cファイルだけをコピーしたい 無条件にでしたら COPY 送り側 受け側 で良いのでしょうが、上のような条件をつけたときはどうしたらよいでしょうか? よろしくお願いいたします。

  • 232C経由でファイルコピー

    winxpのマシンからms-dos3.3Bのマシンに232Cのテストを兼ねてファイルをコピーしたいです。 確かxcopy?とかで出来たような気がするのですが、 詳しいコマンドを忘れてしまいました。 c:\test.txt(xpマシン) a:\(ms-dosマシン) では出来ませんでした。 詳しい方、やり方をお教えください。 ちなみに232Cケーブルはストレートです。

  • Windowsで、ファイルをコピーするとき

    Windowsで、サーバA、サーバB、クライアントCがあり、クライアントC上から操作してAサーバのファイルをBサーバにコピーする場合、コピーするファイルはクライアントCを経由する(クライアントCに負荷がかかるのか)のでしょうか?

  • ファイルの一括コピーについて

    複数のフォルダに、同じファイルを一括コピーする方法はありますでしょうか? 例えば「A」「B」「C」「D」と言う名前のフォルダがあったとして、このそれぞれのフォルダに「あ」と言う名前のファイルを、一括でコピーしたいと思っています。 便利なショートカット方法や、この操作ができるソフトの紹介でも構いません。 良い方法がなければ、optionキーを使用したコピー方法で、各フォルダごとにファイルをコピーしていくしかありませんが。。。 アドバイスをお願いします。

    • ベストアンサー
    • Mac
  • コマンドプロンプトでのファイル操作について

    コマンドプロンプトでのファイル操作について、ご存知のかたどうか教えてください。 a.txt b.txtという2つのファイルがあるとします。 <a.txtの内容> 1111 2222 3333 <b.txtの内容> aaaa bbbb cccc 上記の2つのファイルを読み取りc.txtというファイルへ以下のように 出力したいのですが、コマンドプロンプト(batでも問題ありません) にてできるのでしょうか? <c.txtの内容> 1111,aaaa 2222,bbbb 3333,cccc ご教授のほど、宜しくお願いします。

  • ネットワークドライブ間のコピー

    クライアント端末Aのアプリケーションから 別のネットワーク同士のサーバーBからCへ ファイルをコピーしたいのですが、クライアントAから moveでコピーを行うと物凄く時間がかかってしまいます。 何か良い方法はないでしょうか? 尚、コマンドプロンプトかVBでお願いします。