PHPについて質問です。


あらかじめ指定してあるフォルダ(もちろん内部のファイルを全て含む)をコピーして
別のあらかじめ指定したフォルダの中に貼り付けるするというスクリプトを作成してください。
ただし、フォルダの名前はその日の日時になるようにしてください。

例えば、コピー元ををCドライブ内の「とびうお」内の「ももんが」を、
貼り付ける先をDドライブ内の「はてな」内と指定しておき、
2008年2月16日の17時24分にこのスクリプトを実行したとします。
「はてな」フォルダは「080216_17」という名前になり、
「ももんが」の中に貼り付けられるということです。

質問者はまだPHPの学習を初めて間もない初心者なので、
自分のやりたいことをうまく質問することもままなりません。
不明瞭な場合はその旨コメントをいただければ幸いです。
また、回答は初心者にもわかるようご配慮くださいますようお願いします。

以上、よろしくお願いします。


回答の条件
  • 1人2回まで
  • 登録:2008/02/16 17:18:48
  • 終了:2008/02/18 09:54:33

回答(1件)

id:hatettyo No.1

hatettyo回答回数23ベストアンサー獲得回数22008/02/17 08:11:23

ポイント80pt

質問の内容をそのままスクリプトにすると下記の通りです。

<?php
//あらかじめ指定された元フォルダ名
$dir = "とびうお";

//あらかじめ指定されたコピー先フォルダ名
$new_dir = "はてな";

//とびうお内にあるファイル・フォルダ一覧を取得します。
$list = scandir($dir);

//現在の日時を取得し、フォルダ名の形式にしておきます。
$tmp_dir = date("ymd_H",time());

//コピー先のフォルダ名を日時のフォルダ名に変更します。
rename($new_dir,$tmp_dir);

foreach($list as $value){
   //元フォルダ内を一つ一つチェックしてファイルであればコピーします。
   if(is_file($dir."/".$value)){
      copy($value,$tmp_dir.$value);
   }
}
?>

このスクリプトだとコピー元のフォルダ内にあるフォルダはコピーされません。

フォルダもコピーする場合は

   if(is_dir($dir."/".$value)){
      copy($value,$tmp_dir.$value);
   }

をforeach内に加えて下さい。

更にその中のファイルもコピーするのであれば

再帰関数を作る必要があります。

id:taroemon

ご回答ありがとうございます。

大変参考になりました。

2008/02/18 09:53:43
  • id:taroemon
    すごく基本的な質問なんですけど、
    フォルダのパスの指定はどうやったら良いのでしょうか?
    例えば、Cドライブ内の「とびうお」内の「ももんが」とかコピー元にフォルダにする方法を
    基本的な質問で大変恐縮ですが、お時間のあるときにでも教えてください。
  • id:hatettyo
    c:\とびうお\ももんが
    で大丈夫です。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません