Perl について質問いたします。自分のwindowsXPにActivePerlをつんでいます。


あるフォルダを別のフォルダにコピーしたいのです。

フォルダごとコピーできる方法はないでしょうか?

少し調べたましたが見つけることができませんでした。

copyを使って、1ファイル1ファイルコピーしていくしかないのでしょうか?

回答の条件
  • URL必須
  • 1人20回まで
  • 登録:
  • 終了:2007/10/19 19:35:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:KUROX No.1

回答回数3542ベストアンサー獲得回数140

ポイント27pt

system関数使って、XCOPYコマンドを使う

■Perl-system関数

http://www.tohoho-web.com/wwwperl2.htm#system

■XCOPYコマンド

http://itpro.nikkeibp.co.jp/free/NT/WinKeyWord/20040805/1/xcopy....

-----------

4:[完了] みたいなPerlのコードを書いても良いかもしれません。

http://chaichan.web.infoseek.co.jp/qa2000/qa2015.htm

id:zachouR

ありがとうございます。

いろいろと試してみましたが、今回はFile::Copy::Recursiveを使用しました。

2007/10/15 16:39:51
id:b-wind No.2

回答回数3344ベストアンサー獲得回数440

ポイント27pt

File::Copy::Recursive - Perl extension for recursively copying files and directories - search.cpan.org

このモジュールを使えば出来そうです。


ActivePerlであれば ppm からインストールできます。

id:zachouR

File::Copy::Recursive

を利用してうまくいきました。

ありがとうございます。

2007/10/15 16:39:06
id:hash-9121 No.3

回答回数8ベストアンサー獲得回数0

ポイント26pt

3つの方法

  • ActivePerlに入っている物だけで何とかする

ディレクトリの階層コピーを行う

http://www.tt.rim.or.jp/~canada/comp/cgi/tech/dircopy/

  • File::Copy::Recursiveを使う

ppm で簡単にいれれるのですね。今までcygwinでmakeしてました。

use File::Copy::Recursive qw(fcopy rcopy dircopy);

$from = "c:/work/editor"; #コピー元ディレクトリ名

$to = "c:/work/aaa"; #コピー先ディレクトリ名(絶対パス)

dircopy($from, $to) or die $!;

  • rsync を使う

おすすめはコレ。

perlではないですがunixと同じに使えるので便利です。

全コピーよりも差分コピーの方が更新状況も分かって便利。

cygwinに入っている物を使うか、http://www.itefix.no/phpws/ を使って下さい。

editor ディレクトリ丸ごとコピー

c:\bin\cwRsync\bin>rsync -avz --delete /cygdrive/c/work/editor /cygdrive/c/work/aaa

editor ディレクトリの中身をコピー

c:\bin\cwRsync\bin>rsync -avz --delete /cygdrive/c/work/editor/ /cygdrive/c/work/aaa

id:zachouR

ありがとうございます。

最終的に、File::Copy::Recursiveを使いました。

非常にべんりですねー。

2007/10/15 16:39:29
  • id:kazubokkuri
    かずぼっくり 2007/10/12 19:46:58
    http://chaichan.web.infoseek.co.jp/qa2000/qa2015.htm
    Perlで、フォルダのコピーできますか。


    こちらが参考になるかと思います。

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

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

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

回答リクエストを送信したユーザーはいません